web-dev-qa-db-ja.com

Angular2「tのプロバイダーはありません!」 and Uncaught(in promise):エラー:DIエラー

Angular 2でアプリをビルドし、問題が発生しました。angular CLIを使用してアプリケーションを作成しました。コンポーネントを作成し、 Angular CLIを使用するサービスで、「ng serve」を使用してアプリケーションをローカルで実行すると、すべて正常に動作します。 PROD用のビルドを作成するには、コマンド「ng build --Prod --base-href ./ --aot」を使用して、 DISTフォルダーとIISでフォルダーをホストすると、アプリケーションが正常に開きます。コードをTFSにチェックインすると、jenkinsを使用してDISTフォルダーを自動的に作成し、ビルドをサーバーにプッシュするイベントがあります。これで、サーバーのアプリケーションを参照すると、「No provider for t!」というエラーとエラー:DIエラーがスローされます。私はここで間違っています。

以下はエラーのスクリーンショットです

enter image description here

enter image description here


どんな助けでも大歓迎です。

11

私も同じ問題を抱えていました。私はそれを解決することができました:

  1. ランニング ng serve -aot。これはminify/uglifyを実行せずにAOTを実行しているため、欠落しているクラスが何であるかを見つけることができました。
  2. これを実行すると、エラーコンテキストを調べて、問題のあるコンポーネントを特定することができました。
  3. 問題のコンポーネントに移動し、コンストラクターで参照の削除を開始します(依存関係の解決が行われる場所)。

私の場合、angular2-logger/coreモジュールのLoggerクラスの使用に問題がありました。コンストラクターから参照を削除してコンパイルを再実行すると、魅力的に機能しました。次に、ng serve -prodも修正されました。

私が見つけた1つのことは、Angular CLIを明示的に強制終了して再構築する必要があったことです。何らかの理由で、1行を変更して保存すると、再コンパイルされてなお壊れていると言われました。強制終了したときのみそれを実行してコマンドを再度実行したところ、本当に修正されたことがわかりました。

12
Brian Bauman

私は同じ問題を抱えていましたが、原因はangular2-loggerライブラリの癖にあることがわかりました。 この回答 私のために問題を解決しました

0
Miller

修繕 !私の場合、それはNotificationServiceangular2-notificationsのためでした

解決策は、NotificationServiceをプロバイダー配列から削除するだけですapp module

ただし、これは、AOTモードでangularによって以前に検証する必要があります。

ありがとう!

0
Hasan Daghash

エラーを特定する1つの方法-まず、uglifyプラグインを無効にすることから始めます(これは自動的に本番環境に設定されます)-angular-cliでこれを行う方法はありません。 node_modulesディレクトリでUglifyJSPluginを検索すると、一時的にコメントアウトできます。 (common.jsファイルで)見つけたら、コメント化します。

/*              
// Temporarily comment out this part (in common.js of node_modules) to pinpoint the error
                new UglifyJSPlugin({
                    sourceMap: buildOptions.sourceMap,
                    parallel: true,
                    cache: true,
                    uglifyOptions,
                }),
              */

アプリをもう一度ビルドして実行します。次に、このような不可解な一体エラー

Unhandled Promise rejection: StaticInjectorError(ne)[t -> t]: 
  StaticInjectorError(Platform: core)[t -> t]: 
    NullInjectorError: No provider for t! ; Zone: <root> ; Task: Promise.then ; Value: Error: StaticInjectorError(ne)[t -> t]: 
  StaticInjectorError(Platform: core)[t -> t]: 
    NullInjectorError: No provider for t!

なる

Unhandled Promise rejection: StaticInjectorError(AppModule)[TranslatorService -> Http]: 
  StaticInjectorError(Platform: core)[TranslatorService -> Http]: 
    NullInjectorError: No provider for Http! ; Zone: <root> ; Task: Promise.then ; Value: Error: StaticInjectorError(AppModule)[TranslatorService -> Http]: 
  StaticInjectorError(Platform: core)[TranslatorService -> Http]: 
    NullInjectorError: No provider for Http!
0
Srikanth