在nodejs / express项目中使用NestJs包

时间:2019-01-24 15:23:36

标签: nestjs

我开发了一个嵌套JS模块。我使用npm publish在npm上发布了。

现在,我想在基于nodejs和express的项目中使用NestJS模块。

请告知我是否可以在node / express项目中使用nestjs模块。如果是,那上面有任何可用的文档。

根据用户的评论,添加了更多细节。

这是一种库,其中包含一个很少导出方法的模块。这些方法包含调用aws sns服务发送推送通知的实现。

我现在找到一个尝试使用的链接。

https://codeburst.io/https-chidume-nnamdi-com-npm-module-in-typescript-12b3b22f0724

谢谢。

3 个答案:

答案 0 :(得分:0)

由于NestJS模块本身是用于快速应用程序的模块,因此,您可以将该模块安装为sub app,以使该模块可在当前未使用NestJS的另一个应用程序中使用。

我已经构建了一个NestJS模块,并将其安装为香草快递应用的子应用,您可以从此处的示例测试中借用:https://github.com/tzkmx/nestjs-graphql-as-express-subapp

关键是将Module导出为已初始化的子应用程序,如果不使用NestJS框架本身,则无法将模块直接安装在另一个Express应用程序中。

// 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(),然后使用subApp.getHttpAdapter().getInstance()获取express实例,以将其安装在vanilla js express应用程序中。

答案 1 :(得分:0)

仅用于更新。

我将main.ts / index.ts中的方法导出到您进入的文件中。

那之后我做了

1:npm运行构建 2:npm发布。

这样做之后,当我将发布的软件包安装在另一个express / nest项目中时,便可以调用方法了。

谢谢

答案 2 :(得分:0)

您可以使用 ExpressAdapter 在您的 nest.js 应用程序中托管 express 应用程序。

import { NestFactory } from '@nestjs/core'
import { SubAppModule } from './sub-app/module'
import {ExpressAdapter} from "@nestjs/core/adapters/express-adapter";
import {expressApp} from "./expressApp";

async function bootstrap () {
  const app = await NestFactory.create(SubAppModule, new ExpressAdapter(expressApp))
  app.listen(4444)
  return app
}

bootstrap()

您可能会看到基于@Jesús Franco 原始示例的完整示例: https://github.com/eylonmalin/nestjs-graphql-as-express-subapp