6

我有一个 Nrwl Nx 存储库,其中包含不同的应用程序(角度、带有 express 的 nodejs)和内部共享库。该存储库是使用创建的nx cli,我想构建用于生产的express应用程序之一。

nx build:production myexpressapp

我得到的包非常好,如果我从它的构建位置(dist文件夹)运行它(使用 pm2),它就会运行。但是,如果我将其投入生产,节点模块将丢失并且应用程序无法启动。如果我将 node_modules 文件夹复制到具有内置 dist 的文件夹上方,它也可以正常工作。

但我非常喜欢以下任何一种:

  • 得到一个包含所有必需模块的大包?
  • 在所有需要的模块所在的主包中获取另一个“供应商”包?

我尝试 "vendorChunk":true在我的生产构建选项中使用,但没有任何变化。

有什么想法吗?

4

1 回答 1

8

查看angular.json(或workspace.json),如果您的builderis @nrwl/node:build,under options,设置externalDependenciesnone,如下所示:

{
  "projects": {
    "api": {
      "architect": {
        "build": {
          "builder": "@nrwl/node:build",
          "options": {
            "externalDependencies": "none"
            ...

您可能会遇到以下错误:

ERROR in ...
Module not found: Error: Can't resolve 'some-modules' in ...

只要继续安装它抱怨的东西,直到它停止。

参考:Nrwl Nx 节点生成器

于 2020-07-12T05:38:52.033 回答