2016-04-25 32 views
0

Ich habe eine Webapp, die ich entwickle, die ein Front-End von HTML + Javascript (Angular 1.5.0) + CSS verwendet. Die Website funktioniert einwandfrei, wenn ich sie auf meinem lokalen Host ausführe. Ich habe eine /index.html Datei. Diese Datei importiert meinen JavaScript-Code wie folgt: <script src="/app/app.js"></script>Warum läuft mein Javascript normal, aber minnified, wird es nicht?

Aber jetzt habe ich gerade automatisierte Linting, hässlich etc. mit Grunt implementiert. Grunt konvertiert meine einzelne Javascript-Datei (/app/app.cs) sehr gut in eine kleinere Datei (/dist/js/app.min.js). Ich änderte meine /index.html, um stattdessen das minimierte Javascript einzuschließen: <script src="/dist/js/app.min.js"></script>. Aber jetzt funktioniert die Anwendung nicht mehr. Und in dem Entwickler-Konsole Browser, sehe ich die folgenden Fehler:

angular.js:68 Uncaught Error: [$injector:modulerr] Failed to instantiate module myApp due to: 
Error: [$injector:unpr] Unknown provider: a 
http://errors.angularjs.org/1.5.0/$injector/unpr?p0=a 
    at http://127.0.0.1:8080/bower_components/angular/angular.js:68:12 
    at http://127.0.0.1:8080/bower_components/angular/angular.js:4397:19 
    at getService (http://127.0.0.1:8080/bower_components/angular/angular.js:4550:39) 
    at injectionArgs (http://127.0.0.1:8080/bower_components/angular/angular.js:4574:58) 
    at Object.invoke (http://127.0.0.1:8080/bower_components/angular/angular.js:4596:18) 
    at runInvokeQueue (http://127.0.0.1:8080/bower_components/angular/angular.js:4497:35) 
    at http://127.0.0.1:8080/bower_components/angular/angular.js:4506:11 
    at forEach (http://127.0.0.1:8080/bower_components/angular/angular.js:321:20) 
    at loadModules (http://127.0.0.1:8080/bower_components/angular/angular.js:4487:5) 
    at createInjector (http://127.0.0.1:8080/bower_components/angular/angular.js:4409:19) 
http://errors.angularjs.org/1.5.0/$injector/modulerr?p0=raptorApp&p1=Error%…F%2F127.0.0.1%3A8080%2Fbower_components%2Fangular%2Fangular.js%3A4409%3A19) 

Warum wird die normale Javascript-Datei funktionieren, aber das eines minimiert von Grunt nicht? Wie kann ich es reparieren?

+0

Mit Grunt-ng-Annotate vor dem Mnifying funktioniert es für mich. Vielen Dank! https://www.npmjs.com/package/grunt-ng-annotate –

Antwort

6

Ihre eckige Komponente wird minimiert und es gibt keine Möglichkeit zu wissen, welchen Service injiziert werden soll. Sie sollten Ihre Controller und andere Teile dekorieren, damit Angular ordnungsgemäß funktioniert. Lesen Sie es hier: Angularjs minify best practice

+0

Mit Grunt-ng-Annotate vor dem Mnifying funktioniert es für mich. Vielen Dank! https://www.npmjs.com/package/grunt-ng-annotate –