2014-03-27 60 views
7

我有一個項目中的AngularJS和Angular指令用於Bootstrap,這兩個都是通過Nuget添加的。AngularJS不能在發佈模式下工作(縮小)

編譯調試=「真」,一切工作正常,但一旦我改變編譯調試,工作角停止,我得到了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在縮小後停止工作?這是一個已知的問題?

感謝

回答

10

ASP.NET MVC minifies javascript文件時compilation debug值設置爲"false"。該angular tutorial包括本說明關於​​縮小:

由於角度推斷控制器的依賴從參數名稱到控制器的構造函數,如果你要運行如下的[你]控制器,其所有的功能參數的JavaScript代碼也將被縮小,並且依賴注入器將無法正確識別服務。

最常用的技術來克服這個問題是內嵌括號標記,如:

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

這太問題解釋微小安全語法的重要性:Angularjs minify best practice

+0

ngAnnotate可能,如果你還可以使用不要手動註釋你的代碼,只要你的構建系統提供了一種集成ngAnnotate的方法。 –

相關問題