【问题标题】:Standard error log in Gulp BrowserifyGulp Browserify 中的标准错误日志
【发布时间】:2015-12-09 09:29:34
【问题描述】:

有了这个任务:

gulp.task("es6", function () {
      return browserify({entries: 'src/main/es6/main.js', extensions: ['.js'], debug: true})
      .transform(babelify)
      .bundle()
      .pipe(source('superpos.js'))
      .pipe(streamify(uglify()))
      .pipe(gulp.dest('src/main/webapp'));
});

我收到这种错误日志:

清晰漂亮,我喜欢。

但是为了让我的手表继续运行,我需要处理错误而不是让它过去,比如

  ...
  .transform(babelify)
  .bundle()
  .on('error', function(error){
        // pretty error print
        this.emit('end');
  })
  ...

如何在此处重现相同的错误日志?

我宁愿通过结合 chalk、gutil 和读取错误文件来避免痛苦地复制它,但以某种方式使用相同的功能。

【问题讨论】:

  • 如果我没记错的话,使用“watchify”而不是 Gulp 观察者就足够了。你会得到同样的错误,但 watchify 会抑制进程 kill
  • @ddprrt 我尝试使用 watchify,手表继续运行但没有日志。我可能遗漏了什么,你能用一个日志例子来回答吗?

标签: javascript node.js build gulp babeljs


【解决方案1】:

事实证明,browserify 使用了syntax-error module,因此会抛出包含控制台就绪codeFrame 属性的丰富错误对象。

我可以像这样拦截错误:

gulp.task("es6", function () {
      return browserify({entries: 'src/main/es6/main.js', extensions: ['.js'], debug: true})
      .transform(babelify)
      .bundle()
      .on('error', function(err){
            if (err instanceof SyntaxError) {
                  gutil.log(gutil.colors.red('Syntax Error'));
                  console.log(err.message);
                  // console.log(err.filename+":"+err.loc.line);
                  console.log(err.codeFrame);
            } else {
                  gutil.log(gutil.colors.red('Error'), err.message);
            }
            this.emit('end');
      })
      .pipe(source('superpos.js'))
      .pipe(streamify(uglify()))
      .pipe(gulp.dest('src/main/webapp'));
});

gutil 是 gulp-util

对于这个结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-16
    • 2015-04-08
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    相关资源
    最近更新 更多