返回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”。
答案 0 :(得分:0)
一切正常,就像您期望的那样。这是因为浏览器行为正在向favicon.ico
发出第二个请求。例如,如果您通过邮递员发出此请求,则只会有一个控制台日志。