为什么console.log在Node.js中的app.js中出现两次

时间:2019-03-02 10:15:56

标签: node.js express server

我已经用NodeJS编写了一个代码,当我点击URL时,我需要服务器通过三个中间件功能验证,Cookie和日志记录。发生这种情况,但是控制台被打印了两次。你能帮我找出原因吗?

var express                =   require('express');
var app                    =   express();
var router                 = require('express').Router();

/* Add the middleware to express app */



app.use (function authentication(req,res,next){
    if(req.method === 'GET'){

        console.log("Inside Authentication.js")
        next();  // If your don't use next(), the mmand won't go to the next function.
      }
      else{
          console.log("Inside else Authentication.js")

      }
})

app.use( function cookies(req,res,next){
    if (req.method === 'GET'){
        console.log("Inside cookies.js")
       next();

    }
    else
    {
        console.log("Inside else cookies.js")

    }
})


 app.use(  function logging(req,res,next){
        if(req.method === 'GET'){
            console.log("Inside Logging.js");
            next();

        }
        else{
           console.log("Inside else of Logging.js");

        }
    })



app.use(function(req,res) {
    res.send('Hello there !');
});

app.listen(8080);

o / p-

E:\NodeJSProject\middleware>node app.js
Inside Authentication.js
Inside cookies.js
Inside Logging.js
Inside Authentication.js
Inside cookies.js
Inside Logging.js

1 个答案:

答案 0 :(得分:1)

您的浏览器将执行飞行前CORS请求(即OPTION请求),以查看是否允许您执行请求。

从您的角度来看,它只是一个请求,但是浏览器正在执行两个请求,而您的Express服务器正在完全执行两个请求。

鉴于您正在使用express,可以使用中间件专门处理这些请求。

See here for documentation.

如果您想完全避免CORS请求,则必须从相同的主机,端口和协议为您的网站和API提供服务。

You can read more about CORS here,或者您也可以搜索Stack-内容丰富的帖子。