【问题标题】:ng build --aot fails but ng build works fine with installed libraryng build --aot 失败,但 ng build 与已安装的库一起工作正常
【发布时间】:2020-05-09 02:13:58
【问题描述】:

我们有一个库项目,它位于我们发布到 npmjs 的 nx 项目中。它是从@angular/material 派生的组件的集合。该库已发布到 npmjs @vdlx/vdl-angular。

我们的构建使用 ng-packagr 根据依赖关系依次构建每个组件。

当从 npm 安装到干净的 angular-cli 或 nx 项目时,ng build 命令工作正常,但 ng build --aot 失败并出现错误。

在库 nx 项目中,使用 aot 构建应用程序可以正常工作,可能是因为它从源代码(相对于 node_modules 或项目 /dist 文件夹)获取组件。

ERROR in ./src/app/app.module.ngfactory.js
Module not found: Error: Can't resolve 'badge' in '/Users/dale.manthei/Downloads/angular-hrvy5y/src/app'

这里是问题的简单重新创建:https://stackblitz.com/edit/angular-hrvy5y?file=src%2Fapp%2Fapp.module.ts

它肯定在 stackblitz 中有效。在本地安装项目并运行ng build --aot 失败。

我怀疑我们的库中缺少 angular-cli 项目所期望的某些内容。到目前为止,我一直在尝试使用消费应用程序,但没有任何乐趣。

欢迎提出建议。

【问题讨论】:

    标签: angular-cli angular2-aot ng-packagr nrwl-nx


    【解决方案1】:

    原来问题出在已发布的库上。 当我发布问题时,我无法判断问题是出在消费应用程序还是组件库上。原来是后者。

    为了追踪它,我们手动生成了 ngfactory 文件以查找名称是简单的badge

    使用它,我能够返回库 nx 项目中的组件 ng-packagr 配置。更改组件 package.json 中的名称以包含 npmj 命名空间以及库命名空间就可以了。

    有了这个,我们现在正在使用 ng-packagr 构建一个组件库,其中组件导入其他组件,很像 https://github.com/nrwl/nx/issues/602 中的这个问题。

    【讨论】:

      猜你喜欢
      • 2018-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 2019-12-29
      • 1970-01-01
      相关资源
      最近更新 更多