angularjs – Webpack,angular和ng-annotate-loader – 带有注释角文件的麻烦

前端之家收集整理的这篇文章主要介绍了angularjs – Webpack,angular和ng-annotate-loader – 带有注释角文件的麻烦前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图使用Webpack捆绑一个Angular应用程序,并在捆绑缩小后遇到问题.此语法具有依赖项的手动注释,可用于:

var app = angular.module('app',[
    'ui.router'
])
.config(['$locationProvider','$stateProvider',($locationProvider,$stateProvider) => {
    $locationProvider.html5Mode(true);
    $stateProvider
        .state('root',{
            url: '/',views: {
                '': {
                    template: '<p>Hello!</p>'
                }
            }
        });
}]);

而此语法产生$injector:modulerr错误

var app = angular.module('app',[
    'ui.router'
])
.config(($locationProvider,views: {
                '': {
                    template: '<p>Hello!</p>'
                }
            }
        });
});

我正在为Webpack使用ng-annotate-loader.以下是配置文件的相关部分:

module: {
    loaders: [
        {
            test: /\.js$/,exclude: /node_modules/,loader: 'ng-annotate!babel?stage=1'
        },

但这并不能解决[$injector:modulerr]错误.试图改变加载器:’ng-annotate!babel?stage = 1’与加载器的行:[‘ng-annotate’,’babel?stage = 1′],没有任何改进.你能建议我怎么解决它吗?

编辑:最终发现我的问题基本上是Angular ng annotate does not work with babel的重复

EDIT2:有人指出ng-annotate无法注释角度模块的.config,因为我将angular作为es6模块导入而不是将其声明为变量,这显然混淆了ng-annotate.

解决方法

好吧,我最终在 ng-annotate’s Readme中找到的是一个字符串’ngInject’;放置在函数内部时,可以显示ng-annotate要注释的函数.

我尝试使用我的设置,它工作正常.

但是以一种不需要在函数内部使用这种无关标记字符串的方式设置ng-annotate-loader会很棒.

P.S.:我的问题的Edit2部分包含最终的答案 – 在我的例子中,ng-annotate的静态分析器不满意,因为angular被导入为ES6模块而不是使用require语法声明为变量.

猜你在找的Angularjs相关文章