Mar*_*ess 7 javascript middleware node.js express
我的中间件被多次调用,但我不明白为什么。这是一个非常短的代码,而且非常令人沮丧,因为我刚刚开始学习 Express 和 Node。我不明白为什么它甚至进入第二个中间件,我没有使用next(),我使用了res.send()。
我正在参加在线课程,它的代码与描述的相同。我也搜索了 stackoverflow 但没有任何帮助。我确实读过一些关于第二次调用它的图标的内容,但我不明白为什么它被多次调用。
const express = require("express");
const app = express();
app.use("/", (req, res, next) => {
console.log("This always runs!");
next();
});
app.use("/add-product", (req, res, next) => {
console.log("In first middleware!");
res.send("<h1>Add Product</h1>");
});
app.use("/", (req, res, next) => {
console.log("In second middleware!");
res.send("<h1>Hello from express!</h1>");
});
app.listen(3000);
Run Code Online (Sandbox Code Playgroud)
如果我打开,localhost:3000/add-product我应该进入控制台:
This always runs!
In first middleware!
Run Code Online (Sandbox Code Playgroud)
但我实际上得到:
This always runs!
In first middleware!
This always runs!
In second middleware!
This always runs!
In first middleware!
Run Code Online (Sandbox Code Playgroud)
难道favicon会自动执行一次所有中间件吗?我在第一次app.use()调用之前添加了以下代码:
This always runs!
In first middleware!
Run Code Online (Sandbox Code Playgroud)
现在我明白了
This always runs!
In first middleware!
This always runs!
In first Middleware!
Run Code Online (Sandbox Code Playgroud)
我还是得到了两次。
编辑编辑编辑:
这似乎只发生在 Chrome 中。
不要用于app.use主要用于您要使用路由器的中间件注册的路由。https://expressjs.com/en/4x/api.html#app.use
app.(post|get|delete|put)("route", function(req,res,next){})
对于您的情况,最好查看您的浏览器是否请求 2 个 http 调用。如果是这样,那就翻倍了。
| 归档时间: |
|
| 查看次数: |
5665 次 |
| 最近记录: |