0

angular のプロバイダーに問題があるため、次のエラーが発生します。

行 2696: エラー: 不明なプロバイダー: a

非縮小角度 v 1.06、行 2696 を使用:

providerInjector = createInternalInjector(providerCache, function() {
    throw Error("Unknown provider: " + path.join(' <- '));
}),

これはコードです:

var myApp = angular.module('myApp', [], function ($interpolateProvider) {
    $interpolateProvider.startSymbol('{[{');
    $interpolateProvider.endSymbol('}]}');
});

myApp.directive('buttonsRadio', function() {      
[...]
});


myApp.controller('MainController', function MainController ($scope) {
[...]
})

何か案は?

編集:エラーメッセージを追加しました:

Error: Unknown provider: aProvider <- a
createInjector/providerInjector<@/libs/angular.js:2696
getService@/libs/angular.js:2824
createInjector/instanceCache.$injector<@/libs/angular.js:2701
getService@/libs/angular.js:2824
invoke@/libs/angular.js:2842
instantiate@/libs/angular.js:2874
@/libs/angular.js:4759
applyDirectivesToNode/nodeLinkFn/<@/libs/angular.js:4338
forEach@/libs/angular.js:138
nodeLinkFn@/libs/angular.js:4323
compositeLinkFn@/libs/angular.js:3969
compositeLinkFn@/libs/angular.js:3972
nodeLinkFn@/libs/angular.js:4354
compositeLinkFn@/libs/angular.js:3969
publicLinkFn@/libs/angular.js:3874
bootstrap/resumeBootstrapInternal/</<@/libs/angular.js:963
Scope.prototype.$eval@/libs/angular.js:8011
Scope.prototype.$apply@/libs/angular.js:8091
bootstrap/resumeBootstrapInternal/<@/libs/angular.js:961
invoke@/libs/angular.js:2857
bootstrap/resumeBootstrapInternal@/libs/angular.js:960
bootstrap@/libs/angular.js:973
angularInit@/libs/angular.js:934
@/libs/angular.js:14756
f.Callbacks/n@http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js:2
f.Callbacks/o.fireWith@http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js:2
.ready@http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js:2
B@http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js:2

/libs/angular.js
Line 5704
4

2 に答える 2

2

uglifyまたはその他の ofuscator/compression アルゴリズムを実行する前ng-annotateに、注入可能な配列として依存関係を文字列として追加する grunt タスクを実行する必要があります。手動でコーディングする必要があります。

myApp.controller('MainController', function MainController ($scope) {
[...]
})

なる:

myApp.controller('MainController', ['$scope', function MainController ($scope) {
[...]
}])

見てみましょう: https://github.com/olov/ng-annotate

更新: ng-min AngularJS Pre-minifier非推奨–> ng-annotate を使用

于 2013-12-09T09:12:54.557 に答える
1

ある種の javascript 難読化ツール (Closure、SquishIt、UglifyJS など) を使用していると思います。

この場合、依存関係を次のように指定する必要があります。

var myApp = angular.module('myApp', [], ['$interpolateProvider',function ($interpolateProvider) {
    $interpolateProvider.startSymbol('{[{');
    $interpolateProvider.endSymbol('}]}');
}]);

myApp.directive('buttonsRadio', function() {      
[...]
});


myApp.controller('MainController',['$scope', function MainController ($scope) {
[...]
}])

依存性注入の依存関係を指定することに注意してください。関数を渡す代わりに、パラメーターと関数自体に注入するオブジェクトの名前を含む文字列のリストで配列を指定する必要があります。

于 2013-04-26T18:00:41.023 に答える