我的代码:
var http = require("http");
var express = require("express");
var app = express();
app.set('port',3332);
app.get('/',function(req,res,next){
res.send('OK');
next();
});
app.use(function(req,res,next){
console.log('middleware 1');
next();
});
app.use(function(req,res,next){
console.log('middleware 2');
});
http.createServer(app).listen(app.set('port'),function(){
console.log('nodejs start listen 3332 port!');
});
nodejs服务器输出: nodejs start listen 3332 port!
中间件1
中间件2
中间件1
中间件2
为什么每个中间件被解雇2次,有人可以帮我解释一下。我知道如果删除next()
中的app.get()
,它会被解雇一次。中间件链是一个循环链吗?谢谢。
修改代码,在最后next()
中添加app.use()
。还有一个问题:
var http = require("http");
var express = require("express");
var app = express();
app.set('port',3332);
app.get('/',function(req,res,next){
res.send('OK');
next();
});
app.use(function(req,res,next){
console.log('middleware 1');
next();
});
app.use(function(req,res,next){
console.log('middleware 2');
next(); // new add
});
http.createServer(app).listen(app.set('port'),function(){
console.log('nodejs start listen 3332 port!');
});
当我第一次访问网址时,会调用app.use()
注册的Middelware。但是seconde时间,第三次在浏览器和cmd命令行中访问url时,都不会被调用。
为什么?
答案 0 :(得分:3)
这是favicon.ico
请求。每次请求网站索引页时,浏览器都会尝试加载图标。输出url以在控制台中查看它。使用curl / wget来运行请求。
答案 1 :(得分:0)
我更新了我的nodejs,使用浏览器时没关系。所以我认为这个问题与低版本nodejs有关。谢谢大家。