Используйте пакет NestJs в проекте nodejs / express - PullRequest
0 голосов
/ 24 января 2019

Я разработал гнездовой модуль JS. Я опубликовал это на npm, используя npm publish.

Теперь я хотел бы использовать этот модуль NestJS в проекте, построенном на nodejs и express.

Пожалуйста, сообщите, могу ли я использовать модуль nestjs в проекте node / express. Если да, есть ли какая-либо документация по этому вопросу.

Согласно комментарию от Пользователя, добавляющему немного больше деталей.

Это вид библиотеки, в которой есть модуль с несколькими экспортированными методами. Этот метод содержит реализацию, которая вызывает службу aws sns для отправки push-уведомления.

Я нашел ссылку, сейчас пытаюсь ее использовать.

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

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Только для обновления.

Я экспортировал метод в main.ts / index.ts независимо от того, какой файл является вашей точкой входа.

После этого я сделал

1: npmзапустите сборку 2: npm publish.

После этого, когда я установил опубликованный пакет внутри другого проекта express / nest, я смог вызвать методы.

Спасибо

0 голосов
/ 26 января 2019

Поскольку модуль 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.

...