【问题标题】:Nrwl Nx build for production missing node modules bundleNrwl Nx build for production 缺少节点模块包
【发布时间】:2020-07-01 12:10:48
【问题描述】:

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

nx build:production myexpressapp

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

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

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

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

有什么想法吗?

【问题讨论】:

    标签: express nrwl nrwl-nx


    【解决方案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",但我仍然遇到此问题。
    猜你喜欢
    • 2021-01-24
    • 2019-08-19
    • 2021-10-20
    • 2021-08-02
    • 2019-10-29
    • 2021-02-01
    • 2018-05-17
    • 1970-01-01
    • 2019-03-16
    相关资源
    最近更新 更多