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);
答
如果你有某种构建过程(或者您想引入一个非常小的构建过程),请参阅ng-annotate
项目(https://github.com/olov/ng-annotate)。它是一个处理你的JavaScript代码的工具,可以帮助你避免重复自己。它的功能基本上是读取代码的第一个版本,并为您生成一个$ inject属性,如Pedro Nascimento的答案中所示。
对于grunt,gulp,webpack等有几个插件,但如果你还没有构建过程,使用这个模块也很容易。