Nrwl Nx build for production 缺少节点模块包
Posted
技术标签:
【中文标题】Nrwl Nx build for production 缺少节点模块包【英文标题】:Nrwl Nx build for production missing node modules bundle 【发布时间】:2020-07-01 12:10:48 【问题描述】:我有一个 Nrwl Nx 存储库,其中包含不同的应用程序(角度、带有 express 的 nodejs)和内部共享库。
该存储库是使用nx cli
创建的,我想为生产构建express
应用程序之一。
nx build:production myexpressapp
我得到的包非常好,如果我从它的构建位置(dist
文件夹)运行它(使用 pm2),它就会运行。
但是,如果我将其投入生产,节点模块将丢失并且应用程序无法启动。
如果我将 node_modules 文件夹复制到具有内置 dist 的文件夹上方,它也可以工作。
但我非常喜欢以下任何一种:
获得一个包含所有必需模块的大捆绑包? 在我的主包中获取另一个“供应商”包,其中包含所有需要的模块?我尝试在生产构建选项中使用"vendorChunk":true
,但没有任何变化。
有什么想法吗?
【问题讨论】:
【参考方案1】:查看angular.json
(或workspace.json
),如果您的builder
是@nrwl/node:build
,则在options
下,将externalDependencies
设置为none
,如下所示:
"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 Node Builder
【讨论】:
令人印象深刻!我已经在黑暗中生活了这么久。 :) 它确实有效。谢谢 为数不多的一次,我很快就得到了我需要的完美答案! 谢谢。这太难找了。 这似乎捆绑了 node_modules 中的所有内容,甚至应用程序本身不需要的东西......我正在使用 NestJS,它抱怨找不到 @nestjs/microservices,即使我不是在项目中使用它。当我安装它们时,它抱怨 grpc、mqtt、redis 和其他一堆也没有安装。我不认为我想将所有内容与应用程序捆绑在一起,只将它实际使用的模块捆绑在一起。 我已在构建目标选项 (workspace.json) 中明确指定 externalDependencies: "all",但我仍然遇到此问题。以上是关于Nrwl Nx build for production 缺少节点模块包的主要内容,如果未能解决你的问题,请参考以下文章