【发布时间】:2018-02-09 20:07:22
【问题描述】:
我这里有这段代码:
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');
});
app.get() 回调中的代码未被调用。如果我注释掉 app.use(express.static(__dirname + '/public')) 行,那么回调就会起作用。我试过改变顺序,但这就像彩票一样!我想知道这里出了什么问题。
我确信这与我缺乏关于如何调用中间件的知识有关。有人可以帮我理解这个问题吗?
基本上,我只想在提供文件和在浏览器上加载 index.html 之前执行一些逻辑。顺便说一句,将app.get() 放在app.use(express.static()) 行之前,并没有成功!
【问题讨论】:
-
你有 public/index.html 文件吗?
-
这就是它坏掉的原因。删除它,一切都会工作。可能有像“dir”这样的选项来禁用文件夹的索引,但我不确定
-
但是,如果我删除 index.html 文件。将显示哪个文件。我是否必须重命名同一个文件。因为我想渲染 index.html 文件中的内容。
-
无论您在 app.get() 中发送什么,都会显示出来。现在它正在发送 index.html 然后完成响应,所以它永远不会到达 app.get()。我不知道您要做什么,但使用 index.html 不是节点中的事情。使用模板系统。
-
好的。所以为了呈现 index.html,我必须在 app.get() 中发送它吗?我怎样才能做到这一点?在 publc 我有 index.html 文件,其中定义了 css 和 javascript 文件。使用静态我能够加载 index.html 以及随后的其余文件。有没有推荐的其他工作流程,我是 Node.js 的新手,所以我可能会尝试模仿一些 PHP 习惯,结果一切都错了!