He encontrado un comportamiento extraño al usar middleware en mi backend express. Intento usar la función de middleware de action antes de mi función de middleware invalidJsonDetection en index.js . Si desstructuro mi función de middleware de action , no funciona como se esperaba, pero si asigno la función de middleware con middleware.general.action , funciona según lo previsto.
archivo 1: middleware.js
const middleware = {}; middleware.general = { action(req, res, next) { req.action = req.originalUrl; // simple task next(); } }; middleware.security = { invalidJsonDetection(err, req, res, next) { if (err instanceof SyntaxError && err.status === 400) { // with destructuring: req.action === undefined // without: req.action === req.originalUrl res.json({ action: req.action, status: 'error' }); return; } next(); } }; export default middleware;archivo 2: index.js
import middleware from './middlewares/middleware.js'; const { action } = middleware.general; const { invalidJsonDetection } = middleware.security; const app = express(); // general middleware section app.use(cors({ origin: 'http://localhost:8080', credentials: true })); app.use(express.urlencoded({ extended: true })); app.use(express.json()); app.use(cookieParser()); app.use(action); // not working // app.use(middleware.general.action); // working app.use(invalidJsonDetection); // working as expected app.post('/', (req, res, next) => { res.json({ status: 'test' }); return; }); app.listen(8081, () => { console.log(`Backend is listening on port 8081`); initDatabase(); });Tal vez alguien podría ayudarme con esto.