为什么 Morgan Logger 服务器中间件不能在单独的文件中工作?
Why Morgan Logger server middleware doesn't work in separate file?
我在我的 nextjs
应用程序中关注 this tutorial 以添加新的 中间件 进行日志记录,因此我的 [=27= 中有以下代码]server.js:
// create a write stream (in append mode)
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
// setup the logger
server.use(morgan('combined', { stream: accessLogStream }))
它运行没有问题。
但是我想在中间件目录的单独文件中包含逻辑,所以我有:
middlewares/logger/index.js
import morgan from "morgan";
import fs from 'fs';
import path from 'path';
export default (req, res, next) => {
var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
return morgan('combined', { stream: accessLogStream });
};
在我的 server.js 中,我将拥有:(在导入和初始化内容之后)
server.use(logger);
server.use(othermiddlewareone);
server.use(othermiddlewaretwo);
其他中间件工作正常,但这个坏了。你知道这是为什么吗?
我像这样更改了中间件,现在它工作正常:)
import type { Request, Response, Next } from './types';
import morgan from "morgan";
import fs from 'fs';
import path from 'path';
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'server.log'), { flags: 'a' })
const logger = morgan('combined', { stream: accessLogStream })
export default async (req: Request, res: Response, next: Next) => {
logger(req, res, function (err) {
return next();
})
};
我在我的 nextjs
应用程序中关注 this tutorial 以添加新的 中间件 进行日志记录,因此我的 [=27= 中有以下代码]server.js:
// create a write stream (in append mode)
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
// setup the logger
server.use(morgan('combined', { stream: accessLogStream }))
它运行没有问题。
但是我想在中间件目录的单独文件中包含逻辑,所以我有:
middlewares/logger/index.js
import morgan from "morgan";
import fs from 'fs';
import path from 'path';
export default (req, res, next) => {
var accessLogStream = fs.createWriteStream(path.join(__dirname, 'access.log'), { flags: 'a' })
return morgan('combined', { stream: accessLogStream });
};
在我的 server.js 中,我将拥有:(在导入和初始化内容之后)
server.use(logger);
server.use(othermiddlewareone);
server.use(othermiddlewaretwo);
其他中间件工作正常,但这个坏了。你知道这是为什么吗?
我像这样更改了中间件,现在它工作正常:)
import type { Request, Response, Next } from './types';
import morgan from "morgan";
import fs from 'fs';
import path from 'path';
const accessLogStream = fs.createWriteStream(path.join(__dirname, 'server.log'), { flags: 'a' })
const logger = morgan('combined', { stream: accessLogStream })
export default async (req: Request, res: Response, next: Next) => {
logger(req, res, function (err) {
return next();
})
};