我有一个已经存在的Express应用程序,它非常大。我想逐步将其迁移到NestJS应用程序上。因此,我已经创建了一个包含现有Express实例的Nest应用程序,但我遇到了一个问题-所有的Nest处理程序都会在Express处理程序之后添加。但我有一个根Express中间件,我只想将其应用于一些在其之后的处理程序。如何在Express处理程序之前应用Nest处理程序?
例如,我创建了一个新的NestJS项目,并更改了main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
import { ExpressAdapter } from '@nestjs/platform-express';
import * as express from 'express';
const expressApp = express();
const authMiddleware = (req, res) => res.end('Auth middleware');
expressApp.use(authMiddleware);
expressApp.get('/test', ((req, res) => res.end('Test')))
async function bootstrap() {
const app = await NestFactory.create(AppModule, new ExpressAdapter(expressApp));
await app.listen(3000);
}
bootstrap();
在根路径上,我期望看到 Hello World! ,但是我看到了 Auth middleware
我知道我可以做类似这样的事情
expressApp.get('/test', authMiddleware, ((req, res) => res.end('Test')))
但是当前项目太大了,有子路由和不止一个中间件。也许有另一种正确的方法来做到这一点?
res.end()
,而是使用next()
,但我认为你通常需要重新构建你的应用程序。不确定这是否是你要寻找的,但请查看 NestJS 文档中关于 Guards 的部分?否则,请澄清你想要实现什么。 - Mathias Maerker