使用Babel和解构进行ng-annotate错误

时间:2015-12-04 19:58:10

标签: javascript angularjs babeljs destructuring ng-annotate

使用Babel转换到ES6时出现奇怪的错误,npm install -g npm不喜欢解构。我将我的源码复制到在线babel编译器中,它运行正常。在我的gulp管道链中注释ng-annotate可以消除错误。删除文件中的ng-annotate注释并手动注入也不会更改任何内容。

Gulp部分:

/* @ngAnnotate */

有问题的来源:

return gulp.src(config.scripts.app)
    .pipe(changed(config.dist + '/scripts'))
    .pipe(plumber())
    .pipe(annotate())

    // Filter out and transpile only .es6.js files
    .pipe(es6)
    .pipe(babel({
        presets: ['es2015'],
        plugins: ['extensible-destructuring'],
        comments: false
    }))
    .pipe(es6.restore)

    .pipe(concat('scripts.js'))
    .pipe(gulp.dest(config.dist + '/scripts'))

错误来自var [min, max] = values.map(val => +val); // let/var doesn't make a difference. ngModelCtrl.$modelValue = [min, max]; 中的依赖:

ng-annotate

Error: StringMap expected string key at stringmap.set (/Users/macbookair/Places/app/places/frontend/node_modules/gulp-ng-annotate/node_modules/ng-annotate/node_modules/stringmap/stringmap.js:101:19) at Scope.add (/Users/macbookair/Places/app/places/frontend/node_modules/gulp-ng-annotate/node_modules/ng-annotate/build/es5/scope.js:102:17) at /Users/macbookair/Places/app/places/frontend/node_modules/gulp-ng-annotate/node_modules/ng-annotate/build/es5/scopetools.js:38:25 at Array.forEach (native) .... more 有问题的功能:

stringmap.js

在上面的函数中注销stringmap.prototype.set = function(key, value) { if (typeof key !== "string") { throw new Error("StringMap expected string key"); } if (key === "__proto__") { this.hasProto = true; this.proto = value; } else { this.obj[key] = value; } }; key会返回:

value

显然undefined { kind: 'var', node: { type: 'ArrayPattern', start: 1178, end: 1188, loc: { start: [Object], end: [Object] }, range: [ 1178, 1188 ], elements: [ [Object], [Object] ] }, from: 1215 } 参数未定义,但为什么它甚至关心?

1 个答案:

答案 0 :(得分:0)

  

我有类似的问题,我只是将gulp管道中的顺序更改为:   通天塔->注释。 ng-annotate不支持新的JS版本:github.com/olov/ng-annotate/issues/237

由@illagrenan最初在上面的评论部分回答