【问题标题】:Angular 10 - The target entry-point has missing dependencies:Angular 10 - 目标入口点缺少依赖项:
【发布时间】:2021-06-08 21:53:08
【问题描述】:

Angular 10.2.2 版本。

我已经使用 page 创建了 Angular 库 my-lib。在我的库中,我在其中一个内部 NPM 包 my-comp.web 上有 devDependency

在我的图书馆中,我有imports,如下所示

import { MyWebModule } from "my-comp.web/sdk/angular";
import { myWeb } from "my-comp.web/sdk";

如果我使用ng buildIvy library 构建这个库,创建它的 NPM 包,然后在另一个 Angular 应用程序中使用这个 NPM 包,这个应用程序的构建工作正常。

现在 Angular 建议在禁用 Ivy 的情况下构建库,因此当我使用 ng build --prod 构建相同的库代码并在应用程序中使用此库时,我在构建此应用程序时遇到以下错误。

ERROR in The target entry-point "my-lib" has missing dependencies:
 - my-comp.web/sdk/angular
 - my-comp.web/sdk

应用程序的package.json 具有devDepencencymy-comp.web

我已经尝试了 StackOverflow 上的所有建议,包括删除 node_modules 并重新安装它,但没有任何效果。我可以知道我在这里缺少什么吗?

【问题讨论】:

  • 您是否尝试过将包添加为普通依赖项?
  • 我不能这样做,因为它是库中的 devDependency 并且在应用程序依赖中可用。

标签: angular angular-library angular-ivy


【解决方案1】:

如果在运行时需要,则不应将依赖项添加为 devDependency。 npm documentation 明确说明了 devDependencies 的用途:

如果有人计划在他们的程序中下载和使用您的模块,那么他们可能不想或不需要下载和构建您使用的外部测试或文档框架。

仅当您不通过 --prod 标志时才会安装devDependencies。因此,当您构建应用程序时,它会失败,因为它没有库中使用的依赖项/导入。

所以我建议您将依赖项添加为库中的 peerDependency 和应用程序中的正常依赖项。

【讨论】:

    猜你喜欢
    • 2020-05-29
    • 2021-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-12
    • 2021-05-04
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多