Angular javascript minification cause错误:$ injector:modulerr模块错误

问题描述:

当我像下面这样定义角度时,会导致使用缩小此javascript的问题,这是错误:$ injector:modulerr 模块错误。

angular.module('myModule').controller('MyController', function ($scope) { 

}); 

现在,如果我写下我的角度如下,缩小后就可以了。

angular.module('myModule').controller('MyController', ["$scope", function ($scope) { 

}]); 

在缩小过程中,第一种方法将$ scope转换为其他变量名称,看起来像这样的问题。有没有办法避免不把代码编写为第二种情况?

您可以使用$inject

function MyController($scope) { 
} 

MyController.$inject = ['$scope']; 
angular.module('myModule').controller('MyController', MyController); 

你有这样的咕噜声:https://www.npmjs.com/package/grunt-ng-annotate 我敢肯定你能找到的WebPack同样的事情/吞掉等等

如果你有某种构建过程(或者您想引入一个非常小的构建过程),请参阅ng-annotate项目(https://github.com/olov/ng-annotate)。它是一个处理你的JavaScript代码的工具,可以帮助你避免重复自己。它的功能基本上是读取代码的第一个版本,并为您生成一个$ inject属性,如Pedro Nascimento的答案中所示。

对于grunt,gulp,webpack等有几个插件,但如果你还没有构建过程,使用这个模块也很容易。