Las rutas Expressjs se invocan dos veces cuando se ejecutan
Entorno del sistema operativo: Windows 11, ExpressJS ("express": "^4.18.1", "versión": "4.18.1"), Node v16.15.0
const url = require('url'); const path = require("path"); const express = require('express'); let app = express(); console.log("instantiation"); app.use("/language", function (req, res) { const queryObject = url.parse(req.url, true).query; console.log("/ language"); res.send("Testing server : language"); }); app.use("/", function (req, res) { console.log("/ path"); res.send("Testing server : main page"); }); app.use("*", function (req, res) { console.log("* path"); res.send(`"Testing my server"`); }); app.listen(3001, "127.0.0.1", function () { console.log(`Server listening at ` + 3001); }); Actualizar (La siguiente / ruta todavía se invoca dos veces). ¿Algo que me esté perdiendo?:
const url = require('url'); const path = require("path"); const express = require('express'); let app = express(); console.log("instantiation"); app.use("/language", function (req, res) { const queryObject = url.parse(req.url, true).query; console.log("/ language"); res.send("Testing server : language"); }); app.use("/", function (req, res) { console.log("/ path"); res.send("Testing server : main page"); }); app.listen(3001, "127.0.0.1", function () { console.log(`Server listening at ` + 3001); });¿Es mi sistema o un problema real con express/node?
La razón por la que su controlador de ruta se invoca varias veces es porque está usando app.use('/') en lugar de controladores de métodos específicos como app.get('/') o app.post('/') .
app.use() está diseñado para agregar middleware y coincidirá con la base de una ruta solicitada (en lugar de usar los controladores de métodos, que coincidirán con la ruta completa ).
En otras palabras app.use('/') coincidirá con cualquier solicitud que no haya sido manejada por otros controladores declarados antes. Esto incluye solicitudes a /favicon.ico , que normalmente realiza un navegador al abrir una página. También hará coincidir las solicitudes con /foo/bar , por ejemplo.
Puede encontrar más información sobre app.use() aquí .