为什么我的Javascript正常运行正常,但是缩小,它不会?

时间:2016-04-25 01:07:38

标签: javascript angularjs gruntjs grunt-contrib-uglify

我正在开发一个使用HTML + Javascript(Angular 1.5.0)+ CSS前端的webapp。当我在本地主机上运行时,网站运行良好。我有一个/index.html文件。此文件导入我的javascript代码,如下所示:<script src="/app/app.js"></script>

但是现在我刚刚使用Grunt实现了自动linting,uglifying等。 Grunt非常好地将我的单个Javascript文件(/app/app.cs)转换为缩小的文件(/dist/js/app.min.js)。我更改了/index.html以包含缩小的Javascript:<script src="/dist/js/app.min.js"></script>。但现在应用程序停止工作。在浏览器的开发控制台中,我看到以下错误:

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)

为什么正常的Javascript文件可以正常工作,但Grunt缩小的文件不会?我该如何解决?

1 个答案:

答案 0 :(得分:6)

您的角度组件正在缩小,无法知道要注入的服务。您应该装饰控制器和其他部件以允许Angular正常工作。请在此处阅读:Angularjs minify best practice