100

私の開発マシンでは問題なく動作するかなり単純な Angular アプリケーションがありますが、デプロイ後に (ブラウザー コンソールで) 次のエラー メッセージが表示されて失敗します。

Uncaught Error: [$injector:unpr] http://errors.angularjs.org/undefined/$injector/unpr?p0=tProvider%20%3C-%20t%20%3C-%20%24http%20%3C-%20%24compile

それ以外のメッセージはありません。ページが最初に読み込まれたときに発生します。

ASP.NET MVC5、Angular 1.2RC3 を実行し、git 経由で Azure にプッシュしています。

グーグルは興味深いものを見つけませんでした。

助言がありますか?

編集:

私は TypeScript を使用しており、依存関係を$inject変数で定義しています。

export class DashboardCtrl {

    public static $inject = [
        '$scope',
        '$location',
        'dashboardStorage'
    ];

    constructor(
        private $scope: IDashboardScope,
        private $location: ng.ILocationService,
        private storage: IDashboardStorage) {
    }
}

縮小中に発生し、このエラーを引き起こす可能性があるローカル変数の名前変更の問題を回避する必要がある (または回避することを意図している) と思います。

とはいえ、BundleTable.EnableOptimizations = true開発マシンに設定したときに再現できるため、明らかに縮小プロセスと関係があります。

4

7 に答える 7

168

リンクをたどると、 $injector が依存関係を解決できないためにエラーが発生したことがわかります。これは、javascript が圧縮されたり、醜くなったり、生産のために行っていることが何であれ、angular でよくある問題です。

問題は、たとえばコントローラーがある場合です。

angular.module("MyApp").controller("MyCtrl", function($scope, $q) {
  // your code
})

縮小は変更され$scope$q角度に何を注入するかを指示しないランダム変数に変わります。解決策は、次のように依存関係を宣言することです。

angular.module("MyApp")
  .controller("MyCtrl", ["$scope", "$q", function($scope, $q) {
  // your code
}])

これで問題が解決するはずです。

繰り返しますが、私が言ったことはすべて、エラー メッセージが提供するリンクにあります。

于 2013-10-30T01:18:25.947 に答える