Babel不能转换装饰器

5

如果我忽略了一些显而易见的东西,请原谅,因为我对javascript、ES2015等比较新。

我有一个gulp任务,用gulp-babel处理我的Aurelia应用程序。一切运行和工作正常,除了包含装饰器(Aurelia的@inject)的文件。

那些文件在gulp-notify中产生相同的错误:

错误:(文件路径)/nav-bar.js:赋值表达式的right属性希望节点是类型["Expression"],但实际得到的是"Decorator"

我不知道如何开始解决这个问题。我的任务看起来像:

 gulp.task('build-system', function () {
    return gulp.src(paths.source)
          .pipe(plumber({errorHandler: notify.onError("Error: <%= error.message %>")}))
          .pipe(changed(paths.output, {extension: '.js'}))
          .pipe(sourcemaps.init({loadMaps: true}))
          .pipe(babel(compilerOptions))
          .pipe(sourcemaps.write({includeContent: true}))
          .pipe(gulp.dest(paths.output));
 });

我的compilerOptions如下:

 module.exports = {
   moduleIds: false,
   comments: false,
   compact: false,
   presets: ['es2015'],
   plugins: ['syntax-decorators', 'transform-decorators']
 };

任何见解都将不胜感激!
1个回答

6
我认为这是babel v6的问题。(这可以通过你的presets: ['es2015']看出)如果你回到babel v5.x(与骨架一起提供),它应该可以工作。这里是Babel Phabricator实例中的装饰器问题。根据此回复,可能需要一些时间才能解决。

感谢 @MichaelMalone。卸载 gulp-babel 然后安装 gulp-babel@5.3.0 解决了问题!很高兴知道这不是我误解的问题。 - Jonesopolis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接