在Nx工作区中运行NestJS构建工件时出错

时间:2019-09-20 22:08:41

标签: node.js nestjs nrwl nrwl-nx

当我尝试运行在Nx工作区中创建的NestJS应用程序的构建工件时,我遇到了错误。仅当我在存储库之外不存在node_modules文件夹的任何地方运行结果工件时,才会发生错误。

复制步骤:

  1. 克隆此仓库https://github.com/baumgarb/proxy-example
  2. 运行npm install以安装所有软件包
  3. 运行ng build backend
  4. 进入dist/apps/backend中的dist文件夹
  5. 在该文件夹中运行node main.js,您应该会看到后端成功启动
  6. 现在将main.js复制到克隆存储库之外的其他位置(例如/tmpc:\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 :(得分:0)

您的NestJs应用具有tslib模块依赖性(至少,甚至还有几个)。

因此,您还应该部署具有所需依赖项的package.json。 为此,您可以从package.json复制主开发nx workspace的精确副本,也可以将仅依赖项的特定副本用于已部署的目标。 (以避免您的生产托管环境加载大量无用的库)。

并且不要忘记在启动npm install应用之前调用NestJs