返回response.end无法在node.js中按预期工作

时间:2019-04-11 06:04:44

标签: node.js

返回res.end()不从createServer方法返回。另外,输出打印两次。

虽然我不执行任何res.write,而是在console.log(..)之后仅返回,但一切正常。只有在我尝试使用res.write(..)将响应发送到客户端并返回res.end()之后,返回stmt才能正常工作。

const http=require('http');
const server=http.createServer((req,res)=>{
                  if(req.url==='/more'){
                    console.log('Inside /more');
                    res.write("Inside /more");
                    return res.end();

                   }

                  if(req.url==='/message'){
                    console.log('Inside /message');
                    res.write("Inside /message");
                    res.end();
                    return;
                    }

                  console.log("Outside All");
                  res.write("Outside All");
                  res.end();
               });

server.listen(5000);
  

其URL为:“ http://localhost:5000/more”,控制台输出为:Inside / more
                     所有外部
浏览器输出为:内部/ more

我希望控制台输出为:仅在/ more内部。第一个“ if”之外的任何代码都不应执行,就好像包含return res.end()。

  

其网址为:“ http://localhost:5000/xyz”,控制台输出为:Outside All
                      全部外部
浏览器输出为:全部外部

不知道为什么在控制台中两次打印“ Outside All”。

1 个答案:

答案 0 :(得分:0)

一切正常,就像您期望的那样。这是因为浏览器行为正在向favicon.ico发出第二个请求。例如,如果您通过邮递员发出此请求,则只会有一个控制台日志。