Node.js Express.js在使用会话时没有响应
这是我的应用程序:Node.js Express.js在使用会话时没有响应,node.js,session,redis,express,Node.js,Session,Redis,Express,这是我的应用程序: var express = require('express'), app = express.createServer(), RedisStore = require('connect-redis')(express); app.configure (function(){ app.use (express.logger({ format: ":method :url" })); app.use (express.bodyParser())
var express = require('express'),
app = express.createServer(),
RedisStore = require('connect-redis')(express);
app.configure (function(){
app.use (express.logger({ format: ":method :url" }));
app.use (express.bodyParser());
app.use (express.cookieParser());
app.use (express.session({ store: new RedisStore, secret: "totally random string" }));
});
app.configure ('development', function () {
console.log ("Development mode.");
});
app.configure ('production', function () {
console.log ("Production mode.");
});
app.get ('/', function (req, res) {
res.contentType("text/html");
res.send("hello", 200);
res.end();
})
console.log ("Listening to *:"+8006);
app.listen (8006);
当我使用localhost:8006时,它会挂起在浏览器中/
知道怎么了吗?我可能遗漏了一个小细节。当
app.use(express.session…
行被注释掉时,它会工作
谢谢删除res.end()
,它会停止挂起并呈现页面
var express = require('express'),
app = express.createServer();
app.configure (function(){
app.use (express.logger({ format: ":method :url" }));
app.use (express.bodyParser());
app.use (express.cookieParser());
});
app.configure ('development', function () {
console.log ("Development mode.");
});
app.configure ('production', function () {
console.log ("Production mode.");
});
app.get ('/', function (req, res) {
res.contentType("text/html");
res.send("hello");
})
console.log ("Listening to *:"+8006);
app.listen (8006);
您使用的是什么版本的express?:)只是想澄清一点,其原因是
res.send
是通过express添加到节点的http.ServerResponse
类中的方法,而res.end
是本机方法。除此之外,res.send
在完成时调用res.end
,然后自己调用res.end
会给您带来麻烦,因为它不是设计为被调用两次的(事实上,到那时响应对象可能不再有效)。谢谢。“终止”连接是有意义的,就像在没有快递的情况下那样。。为我节省了几个小时,谢谢