【问题标题】:Angular javascript minification cause Error: $injector:modulerr Module ErrorAngular javascript缩小导致错误:$injector:modulerr模块错误
【发布时间】:2016-03-03 22:39:42
【问题描述】:

当我像下面这样定义角度时,它会导致在使用缩小这个 javascript 时出现问题,即 Error: $injector:modulerr 模块错误。

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

});

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

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

}]);

在缩小过程中,第一种方法会将 $scope 转换为其他变量名,看起来就是这个问题。有没有办法避免不写代码作为第二种情况?

【问题讨论】:

    标签: javascript angularjs minify bundling-and-minification


    【解决方案1】:

    你可以使用$inject:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2015-01-29
          • 1970-01-01
          • 2012-03-17
          • 1970-01-01
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          相关资源
          最近更新 更多