Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 当从浏览器发出请求时,express中间件函数被调用两次_Node.js_Express - Fatal编程技术网

Node.js 当从浏览器发出请求时,express中间件函数被调用两次

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');

下面是我的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');
    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
******************

有人能解释一下,当从浏览器发出请求时,为什么会多次调用中间件功能吗?

当从浏览器加载页面时,看到多个请求的常见原因有两种:

  • 浏览器会自动请求favicon.ico文件
  • 试图从HTML文件(脚本文件、图像、CSS文件等)加载某些资源的浏览器
  • 通过添加以下内容,您可以确切了解每个请求的目的:

    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);
    });