28

ng-packagr を使用して 1 つのプロジェクト @my/common-util をパッケージ化する場合、問題はありません。このクラスには、abstract-person.ts に AbstractPerson という抽象クラスが含まれています。

@my/common-impl という別のプロジェクトでは、AbstractPerson を拡張し、@my/common-util パッケージ名を使用してインポートする別の Person クラスが作成されました。ng-packagr を使用してパッケージ化すると、次のエラーが発生します -->

options.globals の外部モジュール '@my/common/abstract-person' に名前が指定されていません - 'abstractPerson' を推測しています

警告のようだったので、引き続き @my/common と @my/common-impl を別のプロジェクトに npm install しますが、 @my/common-impl から Person クラスを import すると以下のエラーが発生します


./node_modules/@my/common-impl/esm5/common-impl.js のエラー モジュールが見つかりません: エラー: 'C:\Data\me\ の '@my/common/abst ract-person' を解決できませんnode_modules\@my\common-impl\e sm5' resolve '@my/common/abstract-person' in 'C:\Data\me\node_modules\@my\common-impl\esm5' 解析されたリクエストは説明を使用するモジュールですファイル: C:\Data\me\node_modules\@my\common-impl\package.json (相対パス: ./esm5) フィールド 'browser' には、記述ファイルを使用した後、有効なエイリアス構成が含まれていません: C:\ Data\me\node_modules\@my\common-impl\package.json (相対パス: ./esm5) モジュールとして解決


外部、グローバル、package.json の umdModuleIds などをいくつか試しましたが (以下を参照)、どれもうまくいきませんでした。

これがpackage.jsonです


{
  "name": "@my/common-impl",
  "version": "1.0.0-alpha.0",
  "private": true,
  "dependencies": {
    "@my/common": "1.0.0-alpha.0"
  },
  "peerDependencies": {
    "lodash": "^4.17.4"
  },
  "ngPackage": {
    "$schema": "./node_modules/ng-packagr/ng-package.schema.json",
    "dest": "dist/common-impl",
    "workingDirectory": "../.ng_build",
    "lib": {
      "entryFile": "src/public_api.ts",
      "externals": [
        "@my/common/abstract-person" 
      ],
      "globals": {
        "@my/common/abstract-person": "AbstractPerson"
      },
      "umdModuleIds": {
        "abstract-person" : "AbstractPerson"

      }
    }
  }
}

これを是正するには、さらに何が必要ですか?

4

3 に答える 3

44

私はkatexという npm モジュールを使用していました。これを./projects/myLibname/ng-package.jsonumdModuleIdsに追加するとうまくいきました。

{
  "$schema": "../../node_modules/ng-packagr/ng-package.schema.json",
  "dest": "../../dist/documentations",
  "lib": {
    "entryFile": "src/public_api.ts",
    "umdModuleIds": {
      "katex": "katex"
    }
  }
}

これにより、次の警告が消えました

output.globals 内の外部モジュール 'katex' に名前が指定されていません – 推測 'katex'

于 2018-11-28T14:05:09.167 に答える