Javascript grunt express:使用socket.io的配置忽略http基
当我试图将我的项目设置为使用grunt express时,我遇到了一个奇怪的问题,我目前正在尝试将socket.io配置为正常的资产路由 我有两种运行服务器的模式,dev和prod,基于这两种模式,我将分别从不同的位置为文件提供服务 grunfile.js中的相关内容: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:
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的什么配置可以让它按预期工作?