Angular / Cli AOT,包含另一个node_modules文件夹的自定义库

时间:2017-06-30 14:37:38

标签: angular-cli angular2-services node-modules angular-aot

我遇到了AOT编译和自定义软件包的问题。在我的场景中,我有一个Angular / Cli项目,它安装了我自己的包(包A)。包A依赖于包含服务的包B.

包A的NPM安装导致node_modules结构为:

  • node_modules
    • package_a
      • (package_a files)
      • node_modules
        • package_b
          • (package_b files)
          • test.service.ts

这似乎有意义,因为程序包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中的定义正确使用嵌套版本。

  • node_modules
    • package_a
      • (package_a files)
      • node_modules
        • package_b [版本1.0.0]
          • (package_b files)
          • test.service.ts
    • package_b [版本2.0.0]
      • (package_b files)
      • test.service.ts

我是否可以停止额外安装套餐B的任何想法?在主版本之前,我是否缺少指向嵌套版本的东西?

0 个答案:

没有答案