0

我在我的应用程序中按照本教程nextjs添加新的中间件进行日志记录,因此我的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 }))

它工作没有问题。

我想将逻辑放在中间件目录中的单独文件中,所以我有:

中间件/记录器/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);

其他中间件工作正常,但这个中断了。你知道这是为什么吗?

4

1 回答 1

0

我像这样更改了中间件,现在它工作正常:)

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();
  })
};
于 2020-10-27T14:31:10.503 回答