我这里有这段代码:
var express = require('express')
, http = require('http')
var app = express();
var server = app.listen(1344);
var io = require('socket.io').listen(server);
app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({secret: 'secret'}));
app.get('/', function(req, res){
if(req.session){
console.log(req.session);
}
console.log('ok');
});
Run Code Online (Sandbox Code Playgroud)
app.get()
回调中的代码未被调用.如果我注释掉这一app.use(express.static(__dirname + '/public'))
行,那么callaback就可以了.我试过改变订单,但它就像一个乐透!我想知道这里出了什么问题.
我确信这与我在如何调用中间件方面缺乏知识有关.有人能帮助我理解这个问题吗?
基本上我只想在提供文件之前执行一些逻辑,并在浏览器上加载index.html.顺便说一句,放在app.get()
前app.use(express.static())
一行,没有做到这一点!
你的静态文件中间件应该先行.
app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({secret: 'secret'}));
Run Code Online (Sandbox Code Playgroud)
你也应该为app.router添加一个用途.
app.use(express.static(__dirname + '/public'));
app.use(express.bodyParser());
app.use(express.cookieParser());
app.use(express.session({secret: 'secret'}));
app.use(app.router);
Run Code Online (Sandbox Code Playgroud)
为每个请求处理中间件.因此,如果您index.html
的静态文件中有一个,那么请求yourdomain.com/
将永远不会进入,app.router
因为它们将由静态文件处理程序提供服务.删除index.html
然后该请求将流向您的app.router
.
归档时间: |
|
查看次数: |
8609 次 |
最近记录: |