1

AOT コンパイルとカスタム パッケージで問題が発生しています。私のシナリオでは、独自のパッケージ (パッケージ A) をインストールする Angular/Cli プロジェクトがあります。パッケージ A は、サービスを含むパッケージ B に依存しています。

パッケージ A の NPM インストールにより、次の node_modules 構造が生成されます。

  • node_modules
    • package_a
      • (package_a ファイル)
      • node_modules
        • package_b
          • (package_b ファイル)
          • test.service.ts

パッケージ A はパッケージ B の特定のバージョンに依存しているため、パッケージ B はネストされた node_modules フォルダー内にインストールされるため、これは理にかなっているように見えます。また、パッケージ A がパッケージ 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
  }
}

まず、 ng serve を実行すると、すべてが完全に機能し、問題はまったくありません。ただし、AOT コンパイルを使用してプロジェクトをビルドしようとすると、次のエラーで失敗します: ERROR in ... モジュールが見つかりません。

パッケージ B を個別にインストールすると、そのインスタンスがメインの node_modules ディレクトリに存在し、すべてが機能します。ネストされたバージョンが異なっていても、パッケージ A で定義されているように、ネストされたバージョンを正しく使用します。

  • node_modules
    • package_a
      • (package_a ファイル)
      • node_modules
        • package_b [バージョン 1.0.0]
          • (package_b ファイル)
          • test.service.ts
    • package_b [バージョン 2.0.0]
      • (package_b ファイル)
      • test.service.ts

パッケージ B を追加インストールする必要をなくす方法はありますか? メインバージョンの前にネストされたバージョンを指すのに欠けているものはありますか?

4

0 に答える 0