webpack隐藏来自babel错误的堆栈跟踪

时间:2016-01-16 14:41:27

标签: webpack babeljs javascript-build

我有一个相对标准的webpack设置:webpack + babel-stage-0

如果出现语法错误,babel会给我一个非常有用的错误信息,但是还有一个与我的代码完全无关的堆栈跟踪,这通常比终端本身更长。

enter image description here

有没有办法隐藏来自Parser.pp.raise

的堆栈跟踪

我知道这是一个非常小的事情,但隐藏堆栈跟踪意味着更少的视觉噪音,我不必向上滚动半个终端窗口以查看我的错误消息。

我尝试过的事情

我试图用stderr隐藏stderr:

webpack --watch > /dev/null

但它似乎没有帮助。

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,显然没有真正的解决方案。所以我想出了一个黑客:

$ webpack --watch --color | grep -v '^ at .*/node_modules/'

这会过滤webpack输出以删除node_modules目录的回溯,而--color选项可确保grep不会删除颜色

答案 1 :(得分:0)

如果您running webpack via the API(例如来自gulp文件),您可以使用此单行过滤异常消息:

// filter webpack/babel error traces
const filterStackTraces = err =>
  err.toString().split(/[\r\n]+/).filter(line => ! line.match(/^\s+at Parser/)).join(os.EOL);

// example use:
compiler.run( (err, stats) => {
  if (err) return done( new gutil.PluginError('webpack', err));
  if ( stats.hasErrors() ) {
    const statDetails = stats.toJson({errorDetails: false});
    // print out parse errors
    statDetails.errors.forEach((e) => gutil.log(error(tag), filterStackTraces(e)));
    return done(new gutil.PluginError('webpack', 'Parse/ build error(s)'));
  }
  gutil.log(gutil.colors.green(tag), stats.toString({colors: true}));
  done();
});

它会在不触及错误消息和源上下文片段的情况下删除堆栈跟踪,并保持颜色不变。