babel应该抛出语法错误吗?

时间:2015-11-12 10:17:57

标签: node.js browserify babeljs

我已经设置了node.js gulp文件以使用babel转换,允许我在浏览器脚本中使用ES6功能。

当我向输入文件添加故意语法错误时,尽管已经订阅了“错误”,但我看不到babelify输出的任何错误消息。 Using Babel with Browserify指南中建议的事件。

语法无效的示例:

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));
})

我错过了这里的任何步骤吗?

1 个答案:

答案 0 :(得分:3)

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

.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