我在项目中有AngularJS和Bootstrap的Angular指令,这两个指令都是通过Nuget添加的.
当编译debug =“true”时,一切正常,但是一旦我将编译调试更改为false,Angular就会停止工作,我在Chrome的控制台中收到以下错误:
Error: [$injector:unpr] http://errors.angularjs.org/1.2.15/$injector/unpr?p0=nProvider%20%3C-%20n at Error (native) at http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:448 at http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:14726 at Object.i [as get] (http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:13802) at http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:14801 at i (http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:13802) at r (http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:14014) at Object.instantiate (http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:14185) at http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:30669 at http://localhost:10366/bundles/angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1:23558 angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1 (anonymous function) angular?v=Bi8OwYOhmsGdeIKC46ZQQdIHX1faTIVR48lG9QG3GBw1:1
我所有的其他Javascript / CSS都按预期工作.什么可能导致Angular一旦缩小就停止工作?这是一个已知的问题?
谢谢
解决方法
当编译调试值设置为“false”时,ASP.NET MVC
minifies javascript文件.
angular tutorial包括关于缩小的说明:
Since Angular infers the controller’s dependencies from the names of arguments to the controller’s constructor function,if you were to minify the JavaScript code for [your] controller,all of its function arguments would be minified as well,and the dependency injector would not be able to identify services correctly.
解决此问题的最常用技术是内联括号表示法,如:
phonecatApp.controller('PhoneListCtrl',['$scope','$http',function($scope,$http) {...}]);
这个SO问题解释了缩小安全语法的重要性:Angularjs minify best practice