本文介绍了在NodeJS/Express项目中使用NestJs包的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我开发了一个Nest JS模块。我使用NPM发布在NPM上发布的。
现在我想在基于NodeJS和Express的项目中使用该NestJS模块。
请告知我是否可以在node/express项目中使用nestjs模块。如果是,是否有关于该问题的任何文档。
根据用户的评论,添加了更多详细信息。
这是一种库,它有一个模块,但导出的方法很少。这些方法包含调用AWS SNS服务发送推送通知的实现。
我现在找到一个尝试使用该链接的链接。
https://codeburst.io/https-chidume-nnamdi-com-npm-module-in-typescript-12b3b22f0724
提前感谢。
推荐答案
因为NestJS模块本身就是Express应用程序的模块,要使该模块在当前未使用NestJS的另一个应用程序中可用,您可以执行的操作是将其挂载为sub app。
我已经构建了一个NestJS模块,并将其挂载为一个普通Express应用程序的子应用程序,您可以在这里借用我的示例测试:https://github.com/tzkmx/nestjs-graphql-as-express-subapp
关键是将模块导出为已初始化的子应用,如果不在其他Express应用中使用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
'))
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()
,然后使用subApp.getHttpAdapter().getInstance()
获取express实例,才能将其挂载到vanilla js express app中。
这篇关于在NodeJS/Express项目中使用NestJs包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!