我遇到了AOT编译和自定义软件包的问题。在我的场景中,我有一个Angular / Cli项目,它安装了我自己的包(包A)。包A依赖于包含服务的包B.
包A的NPM安装导致node_modules结构为:
这似乎有意义,因为程序包A依赖于某个版本的程序包B,因此程序包B安装在嵌套的node_modules文件夹中。此外,我已确保Package A从Package B导出TestService,以便它可用。
我遇到的问题是尝试从主项目访问包B中的服务时:
app.component.ts
import { Component } from '@angular/core';
import { TestService } from 'package_a';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers: [TestService]
})
export class AppComponent {
constructor(
private log: TestService,
) {}
ngOnInit(): void {
// call function from package_b
}
}
首先,当我运行服务时,一切都很完美,没有任何问题。但是,当我尝试使用AOT编译构建项目时,它失败并显示错误:ERROR in ...找不到模块。
如果我单独安装Package B,那么在node_modules主目录中有一个实例,整个过程都有效。即使嵌套版本不同,它也会按照包A中的定义正确使用嵌套版本。
我是否可以停止额外安装套餐B的任何想法?在主版本之前,我是否缺少指向嵌套版本的东西?