gpt4 book ai didi

node.js - Nest.js 测试错误 : Using the "extends Logger" instruction is not allowed in Nest v8. 请改用 "extends ConsoleLogger"

转载 作者:行者123 更新时间:2023-12-04 11:51:07 24 4
gpt4 key购买 nike

这是我遇到的问题:
我在 Nest.js 中使用我的自定义记录器:

export class ReportLogger extends ConsoleLogger {
verbose(message: string) {
console.log('【Verbose】Reporting', message);
super.verbose.apply(this, arguments);
}

log(message: string) {
console.log('【Log】Reporting', message);
super.log.apply(this, arguments);
}
}
log.interceptor.ts文件:
export class LogInterceptor implements NestInterceptor {
constructor(private reportLogger: ReportLogger) {
this.reportLogger.setContext('LogInterceptor');
}

intercept(context: ExecutionContext, next: CallHandler) {
const http = context.switchToHttp();
const request = http.getRequest();

const now = Date.now();
return next
.handle()
.pipe(
tap(() =>
this.reportLogger.log(
`${request.method} ${request.url} ${Date.now() - now}ms`,
),
),
);
}
}
这是 main.ts文件:
async function bootstrap() {
const reportLogger = new ReportLogger();

const app = await NestFactory.create<NestExpressApplication>(AppModule, {
cors: {
origin: ['http://localhost', 'http://localhost:3000'],
credentials: true,
},
bufferLogs: true,
logger: reportLogger,
});

app.useGlobalInterceptors(
new LogInterceptor(reportLogger),
);

setupSwagger(app);

await app.listen(4200);
}
当我跑 npm run start:dev在 dev 上运行 Nest App,一切正常。但是当我运行 npm run test:e2enpm run test在测试中,它显示此错误:
  Using the "extends Logger" instruction is not allowed in Nest v8. Please, use "extends ConsoleLogger" instead.

10 | const moduleFixture: TestingModule = await Test.createTestingModule({
11 | imports: [AppModule],
> 12 | }).compile();
| ^
13 |
14 | app = moduleFixture.createNestApplication();
15 | await app.init();
我再次阅读了 Nest.js 文档,找到了 Logging breaking change在文档中。但问题是我已经让我的 ReportLogger 扩展了 ConsoleLogger,为什么这个错误又出现了?为什么它只在测试中显示?

最佳答案

将 NestJS 升级到版本 8 后,我遇到了同样的问题。
后来,我发现包@nestjs/testing安装了以前的版本并且没有升级到最新版本。原因是,以前版本的 NestJS 测试模块使用的是旧的 Logger。
为了解决这个问题,你只需要升级 NestJS 测试模块。
为最新版本运行此命令:

npm i @nestjs/testing@latest
具体版本
npm i @nestjs/testing@8.0.6 // <--- Change the NestJS version here
在此之后,只需再次构建并运行测试用例。
外部链接:
  • NestJS Testing NPM
  • 关于node.js - Nest.js 测试错误 : Using the "extends Logger" instruction is not allowed in Nest v8. 请改用 "extends ConsoleLogger",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68689281/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com