如何解决为什么我在节点控制台中两次获得输出?
我刚刚开始学习NodeJS,请帮助我理解这一点
const http = require('http');
const express = require('express');
const app = express();
app.use((req,res,next) => {
console.log('In the Middleware');
next();
});
app.use((req,next) => {
console.log('In another Middleware');
res.send('<h1>Hello From Express</h1>');
});
app.listen(3000);
输出为
In the Middleware
In another Middleware
In the Middleware
In another Middleware
预期
In the Middleware
In another Middleware
解决方法
浏览器通常会向服务器发出多个请求。例如,他们通常将尝试获取favicon.ico
文件。另一个示例是CORS preflight request。
如果在浏览器中打开developer tools,请转到“网络”标签,然后刷新页面,您将看到浏览器发出的所有请求(您可能需要先选中“禁用缓存”复选框)。如果您看到一个以上的请求,则可能是您看到文本多次记录的原因。
另一种简单的测试方法是尝试从浏览器以外的客户端向服务器发出请求。例如,从命令行curl http://localhost:3000
运行此命令。该命令应仅向服务器发出一个请求。在这种情况下,您是否看到文本输出多次?如果没有,那进一步证明您的浏览器正在向您的服务器发出多个请求。
我之所以说发生这种情况,是因为浏览器通常也会请求favicon.ico,但是您可以在开发人员工具的“网络”标签中签入。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。