Me gustaría crear un middleware usando morgan, intenté exportar la función de middleware, luego requiero en app.js. No se porque esto no funciona
Programa intermedio:
const morgan = require('morgan'); const rfs = require("rotating-file-stream"); const rfsStream = rfs.createStream("logs/log.txt", { size: '10M', // rotate every 10 MegaBytes written interval: '1d', // rotate daily compress: 'gzip' // compress rotated files }) function logger(req, res, next){ morgan('tiny', { stream: rfsStream }) next(); } module.exports.logger = logger;aplicación:
const express = require('express'); const app = express(); const PORT = 4000; const { logger } = require('./middlewares/logger'); app.get('/', logger, (req, res) => { res.send('Hello World!') }); app.listen(PORT, () => { console.log(`app running on port: ${PORT}`); });Morgan en sí es un middleware. Eso significa que debes pasarlo req , res y next .
Middleware de registro de solicitudes HTTP para node.js
Por lo tanto, intente cambiar su archivo de Middleware de esta manera:
const morgan = require('morgan'); const rfs = require("rotating-file-stream"); const rfsStream = rfs.createStream("logs/log.txt", { size: '10M', // rotate every 10 MegaBytes written interval: '1d', // rotate daily compress: 'gzip' // compress rotated files }) const logger = morgan('tiny', { stream: rfsStream }) module.exports.logger = logger;