找出什么browserify转换失败

时间:2019-05-28 20:01:34

标签: javascript build browserify

我有一个相当平凡的browserify管道,其中包含许多转换(有些是全局的,有些是局部的)。最近,该构建有时会在Unexpected token上失败(无法正常复制)(我认为与未编译的ES / JSX有关)。堆栈跟踪根本没有用。

我什至不知道捆绑包中的哪个文件真正失败了,更不用说原因了。不确定从何处引发错误(在浏览器化流上没有发出error事件,也没有传递给bundle回调--嗯,甚至没有调用cb开头)。

我怀疑其中一个转换期望使用ES5并在遇到ES6或JSX时失败,但是我不知道为什么这样做,因为babelify转换应该事先运行。要么这样做,要么它会错误地转换部分文件。

要找出根本原因,我需要找出哪个转换(或管道的一部分)失败了。

因此,我有几个问题:

  1. 如何正确调试browserify(或一般而言的流)?如何捕获可能在管道中任何地方抛出的错误?
  2. 如何确定Browserify管道的哪一部分失败?

我的编译任务看起来像这样:

function compile () {
    return new Promise((resolve, reject) => {
        let stream;
        stream = browserify({/* opts */ });
        stream = stream.transform( envify(), { global: true });
        stream = stream.bundle( err => {
            if ( err ) reject(err);
        });
        stream.on("error", err => {
            console.error(err);
        });
        stream.pipe(
            fs.createWriteStream( bundle.dist )
                .on( "close", resolve )
        );
    })
}

0 个答案:

没有答案