babel 应该抛出语法错误吗?

Is babel supposed to throw syntax errors?

我已经设置了一个 node.js gulp file to use the babel 转换,允许我在浏览器脚本中使用 ES6 功能。

当我向输入文件添加一个故意的语法错误时,我没有看到 babelify 输出任何错误消息,尽管我已经按照 Using Babel with Browserify 指南中的建议订阅了 'error' 事件。

无效语法示例:

immmmport $ from 'jquery';

它没有在 CLI 中显示错误,而是默默地失败了。

以下是我配置 gulp 任务的方式:

gulp.task('build', () => {
    browserify(options)
        .transform(babelify)
        .add(sourceFilePath)
        .bundle()
        .pipe(source(outputFileName))
        .pipe(buffer())
        .pipe(gulpif(!argv.production, sourcemaps.init({ loadMaps: true })))
        .pipe(gulpif(argv.production, streamify(uglify())))
        .pipe(gulpif(!argv.production, sourcemaps.write('/')))
        .pipe(gulp.dest(outputDirName));
})

我是否遗漏了任何步骤?

这个问题的根源是我需要添加以下行:

.on("error", err => { gutil.log("Browserify Error", gutil.colors.red(err.message)) })

所以我有这个:

gulp.task('build', () => {
    browserify(options)
        .transform(babelify)
        .add(sourceFilePath)
        .bundle()
        .on("error", err => { gutil.log("Browserify Error", gutil.colors.red(err.message)) })
        .pipe(source(outputFileName))
        .pipe(buffer())
        .pipe(gulpif(!argv.production, sourcemaps.init({ loadMaps: true })))
        .pipe(gulpif(argv.production, streamify(uglify())))
        .pipe(gulpif(!argv.production, sourcemaps.write('/')))
        .pipe(gulp.dest(outputDirName));
})

以下页面有助于诊断此问题:

https://github.com/substack/node-browserify/issues/1044