我们有一个角形库,其中有多个模块.每个模块都可以导入并在父项目中独立使用. 在其中一个模块的组件中,我们有一个来自名为"libhonennumber-js"的依赖项的导入,我们试图将其声明为可选的,但父项目仍然需要在其Package.json中声明该依赖项,即使它们不导入该模块.

这是没有依赖项的父项目上的错误:Error: Module not found: Error: Can't resolve 'libphonenumber-js' in

库的Package.json如下所示:

 "peerDependencies": {
    "@angular/animations": ">=14.1.0",
    "@angular/cdk": ">=14.1.0",
    "@angular/common": ">=14.1.0",
    "@angular/core": ">=14.1.0",
    "@angular/forms": ">=14.1.0",
    "@types/bootstrap": "^5.2.0",
    "@types/jquery": ">=3.5.14",
    "@types/lodash-es": ">=4.17.6",
    "dayjs": ">=1.11.4",
    "jquery": ">=3.6.0",
    "libphonenumber-js": ">=1.10.9"
    ...
  },
  "peerDependenciesMeta": {
    "libphonenumber-js": {
      "optional": true
    }
  },

我们有NPM版本8.5.0和 node 版本16.14.2.

可能我们没有正确定义可选依赖项.你能帮忙吗?

推荐答案

如果您的一个模块具有其他模块没有的依赖项,并且如果您将此依赖项标记为可选,则必须使用secondary entrypoints.在构建期间,类型脚本编译器判断所有使用的入口点的类型声明文件,并在出现错误的情况下抛出错误.

您可以 for each 模块创建一个次要入口点,或者保留您的"大"入口点,然后将有问题的模块提取到它自己的入口点中.

要创建和配置辅助入口点,只需创建一个名为入口点的目录,将一个ng-package.json文件添加到包含内容{}的目录中.

Angular相关问答推荐

Angular中绑定嵌入标签src属性的问题

FormArray包含嵌套的FormGroups.如何访问嵌套的表单组控件?

导致无限请求的Angular HttpInterceptor和HttpClientModule

如何使用ANGLING HTTP.POST并将类型更改为键入的回复?

使用jsPDF生成带有图像的PDF时出现灰色条纹

当在server.ts文件中定义API路径时,Angular 17构建失败

在Angular 17的本地服务应用程序时禁用SSR

在以下位置升级到Angular 16 Break Sharepoint广告:This._history.replaceState不是函数

Angular 16 Auth Guard在具有0的服务时给出Null Injector错误;httpclient;被注入

Angular 15 在 URL 中使用@进行路由

ngRouterOutlet和组件生命周期使用自定义模板渲染的问题

相同的 Angular 代码在生产环境中停止工作

显示带有数组子列的标题表 - Angular

Angular ngSubmit 不起作用(内部按钮和导入模块)

错误:在@angular/core中找不到导出ɵivyEnabled(导入为ɵivyEnabled)

如何使用 Angular 12 material 验证密码和确认密码?

如何使用ngrx和effects 订阅成功回调

Error: Module not found: Error: Can't resolve '@angular/cdk/scrolling'

Angular - 工作区中未设置配置

@angular/platform-b​​rowser 与 @angular/platform-b​​rowser-dynamic