Ошибка при запуске артефакта сборки NestJS в рабочей области Nx - PullRequest
1 голос
/ 21 сентября 2019

Я сталкиваюсь с ошибками при попытке запустить артефакт сборки приложения NestJS, созданного в рабочей области Nx.Ошибка возникает только тогда, когда я запускаю полученный артефакт в любом месте за пределами хранилища, где не существует папки node_modules.

Шаги для воспроизведения:

  1. Клонируйте этот репозиторий https://github.com/baumgarb/proxy-example
  2. Запустите npm install, чтобы установить все пакеты
  3. Выполните ng build backend
  4. Перейдите в папку dist в dist/apps/backend
  5. Запустите node main.js в этой папке, выдолжен увидеть, что сервер запускается успешно
  6. Теперь скопируйте файл main.js в другое место за пределами клонированного репозитория (например, /tmp или c:\temp)
  7. Запустите node main.js снова вновое местоположение, и вы столкнетесь со следующей ошибкой:

internal/modules/cjs/loader.js:775
    throw err;
    ^

Error: Cannot find module 'tslib'
Require stack:
- /home/bernhard/main.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:772:15)
    at Function.Module._lo[ad (internal/modules/cjs/loader.js:677:27)
    at Module.require (internal/modules/cjs/loader.js:830:19)
    at require (internal/modules/cjs/helpers.js:68:18)
    ...[omitted for brevity] {
  code: 'MODULE_NOT_FOUND',
}

Вы также можете попробовать запустить артефакт сборки в контейнере Docker, это приведет к той же ошибке.

Вот также сравнение между моей локальной машиной и WSL: enter image description here

Может кто-нибудь сказать мне, в чем проблема и как ее исправить?Заранее большое спасибо!

1 Ответ

0 голосов
/ 22 сентября 2019

Ваше приложение NestJs имеет зависимость от модуля tslib (по крайней мере, и даже от нескольких других).

Таким образом, вы должны также развернуть package.json с необходимыми зависимостями.Для этого вы можете сделать точную копию основной разработки package.json из nx workspace или использовать конкретную копию с зависимостями только для развернутой цели.(чтобы ваша рабочая среда хостинга не загружала много бесполезных библиотек).

И не забудьте позвонить npm install перед запуском приложения NestJs.

...