1

以前は Angular CLI 1.2.8 で実行されていた Angular 5 アプリがあり、すべてがうまく機能していました。NullInjectorError: No provider for Http!1.3 へのアップグレード後 (1.5.4 への途中)、 localhost:4200 にアクセスしたときに使用している外部 npm リンク ライブラリに問題があるようです。

HttpModule を shared-lib モジュールに追加すると、エラーはなくなりますが、追加のプロバイダー エラーが発生します。shared-lib モジュールではなく、以前と同じように、shared-lib がメイン アプリのモジュールを使用することを期待しています。この例では、shared-lib には HttpModule に依存する angular サービスがありますが、shard-lib は HttpModule をインポートしません。私が使用しているメイン プロジェクトは、HttpModule をインポートします。

私のtsconfig.json:

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "src",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": [
      "node_modules/@types"
    ],
    "types": [ "node", "jasmine" ],
    "lib": [
      "es2016",
      "dom"
    ],
    "paths": {
      "rxjs/*": [
        "node_modules/rxjs/*"
      ],
      "@angular/*": [
        "node_modules/@angular/*"
      ]
    }
  }
}

私の tsconfig.app.json:

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "module": "es2015",
    "baseUrl": "",
    "types": []
  },
  "include": [
    "./**/*.ts",
    "../node_modules/shared-lib/src/**/*.ts",
    "../node_modules/shared-lib/index.ts",
    "../node_modules/shared-lib/shared-lib.ts"
  ],
  "exclude": [
    "test.ts",
    "**/*.spec.ts",
    "../node_modules/shared-lib/**/*.spec.ts"
  ],
  "typeRoots": [
    "node_modules/@types"
  ],
  "types": [ "node" ]
}

更新:共有ライブラリ node_modules の @angular フォルダーを削除した後、プロジェクトが機能することがわかりました。tsconfig.json 内のオブジェクトのパスが、Angular の使用をプロジェクトの node_modules のみにオーバーライドしない理由がわかりません。

4

2 に答える 2

0

現在のノード バージョンと互換性のない angular/cli バージョンで同様の問題に直面しました。問題は、依存関係のアップグレードにあります。これは通常、Angular の下位バージョンから他の上位バージョンにアップグレードするときに発生します。次の手順を試すことができます。

npm outdated  --> To list latest and current package details in local application.
npm update    --> to update the local packages.

それでも機能しない場合は、「node_modules」フォルダーを削除して、新しい依存関係をインストールしてみてください。

npm install

その後、cli を含むすべてのパッケージが古くなっていないかどうかを確認できます。

于 2017-11-29T19:51:29.157 に答える