角度 JavaScript 缩小导致错误:$injector:modulerr 模块错误

Angular javascript minification cause Error: $injector:modulerr Module Error

本文关键字:错误 injector modulerr 模块 JavaScript 角度 缩小      更新时间:2023-09-26

当我像下面这样定义角度时,它会导致使用缩小这个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等的插件,但是如果您还没有构建过程,那么使用这个模块也很容易。

你有这个Grunt:https://www.npmjs.com/package/grunt-ng-annotate我很确定你可以为webpack/gulp等找到同样的东西......