AngularJS无法在发布模式下工作(缩小)

时间:2014-03-27 01:17:37

标签: asp.net-mvc angularjs bundling-and-minification

我在项目中有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一旦缩小就停止工作?这是一个已知的问题吗?

由于

1 个答案:

答案 0 :(得分:10)

compilation debug值设置为"false"时,

ASP.NET MVC minifies javascript文件。 angular tutorial包含有关缩小的说明:

  

由于Angular将控制器的依赖关系从参数名称推断到控制器的构造函数,如果你要缩小[你的]控制器的JavaScript代码,它的所有函数参数也会缩小,并且依赖注入器会无法正确识别服务。

克服此问题的最常用技术是内联括号表示法,例如:

phonecatApp.controller('PhoneListCtrl', ['$scope', '$http', function($scope, $http) {...}]);

此SO问题解释了缩小安全语法的重要性:Angularjs minify best practice