Express Middleware вызывается несколько раз - PullRequest
0 голосов
/ 14 мая 2019

Мое промежуточное ПО вызывается несколько раз, и я не могу понять, почему.Это действительно короткий код, и он очень расстраивает, так как я только начал изучать express и node.Я не понимаю, почему он даже попадает во второе промежуточное ПО, я не использовал next(), я использовал res.send().

Я беру онлайн-курс, и это тот же код, что и описанный,Я также искал stackoverflow, но ничего не помогло.Я прочитал кое-что о favicon, который вызывает его во второй раз, но я не могу понять, почему он вызывается несколько раз.

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);

Если я открываю localhost:3000/add-product, я должен войтиконсоль:

This always runs!
In first middleware!

, но на самом деле я получаю:

This always runs!
In first middleware!
This always runs!
In second middleware!
This always runs!
In first middleware!

Может ли favicon автоматически запускать все промежуточные программы один раз?Я добавил этот код перед первым app.use() вызовом:

app.get("/favicon.ico", (req, res) => res.status(204));

Теперь я получаю

This always runs!
In first middleware!
This always runs!
In first Middleware!

Я все еще получаю его дважды.

edit edit edit:

Это происходит только в Chrome.

Ответы [ 2 ]

1 голос
/ 14 мая 2019

Не используйте app.use для маршрутов, которые в основном используются для регистрации промежуточного программного обеспечения, для которого вы хотите использовать маршрутизатор. https://expressjs.com/en/4x/api.html#app.use

app.(post|get|delete|put)("route", function(req,res,next){})

в вашем случае лучше посмотреть, запрашивает ли ваш браузер 2 http-звонка. Если так, то это удвоится.

0 голосов
/ 14 мая 2019

Проблема решена: я переустановил Chrome, и теперь он работает нормально.Спасибо всем!

...