Поскольку модуль NestJS сам по себе является модулем для экспресс-приложения, то, что вы могли бы сделать, чтобы этот модуль можно было использовать в другом приложении, которое в настоящее время не использует NestJS, - это смонтировать его как вспомогательное приложение .
Я собрал модуль NestJS и смонтировал его в качестве подпапа приложения vanilla Express, вы можете позаимствовать его из моего примера теста здесь: https://github.com/tzkmx/nestjs-graphql-as-express-subapp
Ключ экспортирует ваш Модуль как уже инициализированное подподключение, вы не можете монтировать модуль непосредственно внутри другого экспресс-приложения, не используя в нем саму платформу NestJS.
// src/sub-app/boot.js
import { NestFactory } from '@nestjs/core'
import { SubAppModule } from './module'
export default async function bootstrap () {
const app = await NestFactory.create(SubAppModule)
return app
}
// src/app.js
import bootstrapSubApp from './sub-app/boot'
import express from 'express'
const app = express()
app.get('/', (req, res) => res.send('hello express\n'))
async function mountSubApp (app, mountPath, subAppBoot) {
const subApp = await subAppBoot()
await subApp.init()
app.use(mountPath, subApp.getHttpAdapter().getInstance())
return app
}
mountSubApp(app, '/sub', bootstrapSubApp)
.then(app => app.listen(4000))
Как видите, сначала нужно вызвать subApp.init()
, а затем получить экземпляр express с помощью subApp.getHttpAdapter().getInstance()
для его монтирования в приложении vanilla js express.