[解決済み] "Uncaught Error: デプロイ後のangularで「[$injector:unpr]」が発生する
質問
かなりシンプルな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 にプッシュしています。
ググっても面白いことは出てきません。
何かいい方法はないでしょうか?
EDITです。
TypeScriptを使っていて、依存関係を定義するのに
$inject
変数で定義しています。
export class DashboardCtrl {
public static $inject = [
'$scope',
'$location',
'dashboardStorage'
];
constructor(
private $scope: IDashboardScope,
private $location: ng.ILocationService,
private storage: IDashboardStorage) {
}
}
これは、minification中に発生し、このエラーを引き起こす可能性のあるローカル変数のリネームの問題を回避するはず(または意図されている)だと思います。
とはいえ、明らかにminificationプロセスと関係があるようで、私が
BundleTable.EnableOptimizations = true
を設定すると、再現できます。
どのように解決するのですか?
リンクをたどると、$injectorが依存関係を解決できないためにエラーが発生することがわかります。これは、javascriptがminify/uglify/制作のために何をしているかにかかわらず、angularで一般的な問題です。
問題は、例えばコントローラを持っている場合です。
angular.module("MyApp").controller("MyCtrl", function($scope, $q) {
// your code
})
minificationの変更点
$scope
と
$q
をランダム変数に変換してしまうと、angularに何を注入すればいいのかが分からなくなってしまいます。解決策は、このように依存関係を宣言することです。
angular.module("MyApp")
.controller("MyCtrl", ["$scope", "$q", function($scope, $q) {
// your code
}])
これで問題が解決するはずです。
もう一度言っておきますが、私が言ったことはすべて、エラーメッセージがあなたに提供するリンクにあります。
関連
-
[解決済み] angularのpostリクエストでpreflightのレスポンスがHTTPステータスコード403で不正になる。
-
[解決済み] AngularJSでkeypressイベントを使用するには?
-
[解決済み] md-selectでデフォルト値を設定する方法
-
[解決済み] controllerAs "プロパティを使用する理由は何ですか?
-
角型グローバル確認ボックス
-
[解決済み] ngInject'を本当に書く必要があるのか?
-
[解決済み] AngularJS: ngRouteが動作しない。
-
[解決済み] Jasmineの "callThrough "と "callFake() "の実用的な例が欲しい
-
[解決済み] 入力フィールドにフォーカスを当てるには?
-
[解決済み] 子コントローラから親スコープにアクセスするAngularJS
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Angularjs accordion ng-click on panel-header
-
[解決済み] Angular UI-Routerのマルチビュー
-
[解決済み] angularjsでチャートを作成する【終了】。
-
angularjsのルーティングについて $stateと$stateParamsの話
-
angularでのng-repeatとtrack by
-
[解決済み] AngularJSを使用して、ブラウザのコンソールで$scope変数にアクセスするにはどうすればよいですか?
-
[解決済み] AngularJS コントローラにおける 'this' と $scope の比較
-
[解決済み] コントローラでフィルタを使用するには?
-
[解決済み] ServiceとFactoryで迷う
-
[解決済み] ng-repeat内のng-click関数にパラメータを追加しても、うまくいかないようです。