Express项目中使用NestJs包

Express项目中使用NestJs包

本文介绍了在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包的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-11 09:11