Angular javascript minification导致错误:$ injector:modulerr模块错误

时间:2016-03-03 22:39:42

标签: javascript angularjs minify bundling-and-minification

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

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

});

现在,如果我按照下面的方式写下我的角度,那么在缩小之后它会很好。

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

}]);

在缩小期间,第一种方式会将$ scope转换为其他变量名,看起来就是问题。有没有办法可以避免不编写代码作为第二种情况?

3 个答案:

答案 0 :(得分:2)

您可以使用$inject

function MyController($scope) {
}

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

你有这个用于Grunt:https://www.npmjs.com/package/grunt-ng-annotate 我非常确定你能为webpack / gulp等找到同样的东西......