Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript grunt express:使用socket.io的配置忽略http基_Javascript_Node.js_Socket.io_Gruntjs_Grunt Express - Fatal编程技术网

Javascript grunt express:使用socket.io的配置忽略http基

Javascript grunt express:使用socket.io的配置忽略http基,javascript,node.js,socket.io,gruntjs,grunt-express,Javascript,Node.js,Socket.io,Gruntjs,Grunt Express,当我试图将我的项目设置为使用grunt express时,我遇到了一个奇怪的问题,我目前正在尝试将socket.io配置为正常的资产路由 我有两种运行服务器的模式,dev和prod,基于这两种模式,我将分别从不同的位置为文件提供服务 grunfile.js中的相关内容: express: { options: { server: "app.js", port: 3000, hostname: "localhost" }, dev: { options:

当我试图将我的项目设置为使用grunt express时,我遇到了一个奇怪的问题,我目前正在尝试将socket.io配置为正常的资产路由

我有两种运行服务器的模式,devprod,基于这两种模式,我将分别从不同的位置为文件提供服务

grunfile.js中的相关内容

express: {
  options: {
    server: "app.js",
    port: 3000,
    hostname: "localhost"
  },
  dev: {
    options: {
      debug: true,
      bases: "dev"
    }
  },
  prod: {
    options: {
      bases: "public"
    }
  }
}, .. etc ..
我正在使用这个:app.js:

/**
 * Module dependencies
 *
 */
var express = require("express"),
  packageJson = require("./package.json"),
  app = express(),
  path = require('path'),
  httpServer = require("http").createServer(app),
  io = require("socket.io").listen(httpServer);

/**
 * Express
 *
 */
app.configure(function() {

  app.use(express.compress());
  app.set("views", __dirname + "/app/views");
  app.set("view engine", "jade");
  app.use(express.favicon(__dirname + "/public/img/favicon.ico"));
  app.use(express.logger("dev"));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);

  /**
   * 404 page
   *
   */
  app.use(function(req, res) {

    res.status(404).render("404");

  });

});

/**
 * Socket.io
 *
 */
io.configure(function() {

  io.set("log level", 2);

});

/**
 * Routes
 *
 */
require("./app/routes")(app);

/**
 * Export
 *
 */
exports = module.exports = httpServer;

// Adding necessary use() method for returnable httpServer instance
exports.use = function() {
  app.use.apply(app, arguments);
};
在这样的设置下,如果我在dev模式下运行服务器,会发生以下情况(base被忽略,但是
http://localhost:3000/socket.io/socket.io.js
works!:

socket.io.js  - 200 - FOUND
main.css      - 404 - NOT FOUND
require.js    - 404 - NOT FOUND
但是,如果我将我的app.jsconfigure部分更改为手动添加例如dev路由(与base相同),那么一切都可以正常工作:

app.use(express.static(path.join(__dirname, 'dev')));

socket.io.js  - 200 - FOUND
main.css      - 200 - FOUND
require.js    - 200 - FOUND
etc.js        - 200 - FOUND
我不想让这些基础工作的原因是,它的黑客性会降低,而且它们本来就是要这样使用的,如果我完全删除socket.io的东西,它们就会工作


有什么提示吗?thnx!

根据自述文件中的规范,你不想在你的应用程序中使用listen(),所以这是我看到的一个问题。我还看到你在使用debug,。

是的,但是Grunfile.js和app.js的什么配置可以让它按预期工作?