2016-12-06 3 views
0

多くの異なるjsファイルを使用するアプリケーションがあります。私がgulpで正常にアプリケーションをコンパイルすると、すべて正常に動作しますが、1つのファイルをすべてコンパイルしてコンパイルすると、エラー(Uncaught Error: [$injector:modulerr])が表示されます。ここでコンパイル時の隅々までのデパンダントの問題

app-55bb2aca73.js:4 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.5.8/$injector/modulerr?p0=app&p1=Error%3A%20%…http%3A%2F%2Flocalhost%3A8080%2Fbuild%2Fjs%2Fapp-55bb2aca73.js%3A4%3A30075) 
    at app-55bb2aca73.js:4 
    ... 

gulpfile.js(Laravels elexirプラグインを使用)である:ここでは

mix.scripts([ 

     /*libs*/ 
     '../../../node_modules/jquery/dist/jquery.slim.min.js', 
     '../../../node_modules/bootstrap/dist/js/bootstrap.min.js', 
     '../../../node_modules/angular/angular.min.js', 
     '../../../node_modules/angular-cookies/angular-cookies.min.js', 
     '../../../node_modules/pickadate/lib/compressed/picker.js', 
     '../../../node_modules/pickadate/lib/compressed/picker.date.js', 
     '../../../node_modules/pickadate/lib/compressed/picker.time.js', 

     'app.js', 
     'config/*.js', 
     'angular/controller/*.js' 

    ], 'public/js/app.js'); 

app.js:たとえば

var app = angular.module("app", ['ngCookies'], function ($interpolateProvider) { 
    $interpolateProvider.startSymbol('<%'); 
    $interpolateProvider.endSymbol('%>'); 
}); 

ここでは、コントローラの開始:

app.controller('someCtrl', function ($scope, $window, $http, $cookies) { 

一部1つのファイルでこれが動作しない理由を知ることができますか?

答えて

2

小型化すると、コントローラのメソッド名が削除されます。ここ

app.controller('someCtrl', ['$scope', '$window', '$http', '$cookies' 
    function ($scope, $window, $http, $cookies) { 
     // ... 
    } 
] 

より:https://docs.angularjs.org/guide/di

の参照を持つことが、このように含める必要があります
0

これは、パラメータとして渡された変数の名前に従って依存関係を注入するためにシステム角度が使用されるためです。あなたが単一のものにあなたのファイルを縮小化され、変数が同じ元の名前を保持していない場合は、次のように手動で依存関係を注入する必要があります

var myApp = function ($interpolateProvider) { 
    $interpolateProvider.startSymbol('<%'); 
    $interpolateProvider.endSymbol('%>'); 
} 
myApp.$inject = ['$interpolateProvider']; 

angular.module("app", ['ngCookies'], myApp); 

...そして、あなたのコントローラで:

app.controller('someCtrl', controlFn); 

var controlFn = function ($scope, $window, $http, $cookies) {}; 
controlFn.$inject = ['$scope', '$window', '$http', '$cookies']; 
関連する問題