Node.js 当从浏览器发出请求时,express中间件函数被调用两次
下面是我的nodejs代码Node.js 当从浏览器发出请求时,express中间件函数被调用两次,node.js,express,Node.js,Express,下面是我的nodejs代码 const express = require('express'); const app = express(); app.use('/', (req, res, next) => { console.log("In interceptor"); next(); }); app.use('/users', (req, res, next) => { console.log('In /users middleware');
const express = require('express');
const app = express();
app.use('/', (req, res, next) => {
console.log("In interceptor");
next();
});
app.use('/users', (req, res, next) => {
console.log('In /users middleware');
res.send('<h1>From "/users" handler </h1>');
});
app.use('/', (req, res, next) => {
console.log("Default handler");
res.send('<h1>From default handler</h1>');
});
app.listen(3000);
但是当使用curl
发出请求时,我看不到多个调用
curl http://localhost:3000
******************
In interceptor
Default handler
******************
curl http://localhost:3000/users
******************
In interceptor
In /users middleware
******************
有人能解释一下,当从浏览器发出请求时,为什么会多次调用中间件功能吗?当从浏览器加载页面时,看到多个请求的常见原因有两种:
console.log(req.url);
到您的中间件。发现这是由于浏览器发出的
/favicon.ico
请求造成的。添加特定处理程序(如下所示)可防止调用默认处理程序两次
app.use('/favicon.ico', (req, res, next) => {
console.log('favicon handler');
res.sendStatus(200);
});
谢谢你的回复。在发布问题之后,我做了同样的操作,发现重复调用是由浏览器发出的“favicon.ico”请求引起的。
app.use('/favicon.ico', (req, res, next) => {
console.log('favicon handler');
res.sendStatus(200);
});