如何从browserify中捕获所有错误?

时间:2016-08-02 11:40:38

标签: javascript node.js gulp browserify watchify

我使用以下gulp任务

const gulp          = require('gulp');
const browserify    = require('browserify');
const watchify      = require('watchify');
const source        = require('vinyl-source-stream');
const gutil         = require('gulp-util');

gulp.task('watchify', () => {

    var bundler = watchify(browserify('./test/app.js', {
            debug: true,
            fullPaths: true,
            paths: ['./src'],
            cache: {},
            packageCache: {}
        }))
    .on('update', bundle)
    .on('error', (error) => { gutil.log('[error]', error); });

    function bundle(){
        return bundler
            .bundle()
            .pipe(source('bundle.js'))
            .pipe(gulp.dest('./test/'));
    }

    return bundle();

});

但今天浏览器进程挂起而没有发送错误事件,经过数小时的跟踪和错误我发现它是因为这样的事情:

aFunction(argA, , argC);

(我在函数调用中错过了参数的一些正在进行中的代码)

我的问题是,我怎样才能更轻松地听取这类错误?

我当然可以先把文件丢失,但我也想知道它是否可以在browserify中使用。

1 个答案:

答案 0 :(得分:1)

看起来this watchify的未合并拉取请求可能已经解决了您的问题 - 似乎错误未在gulp-watchify模块中被正确捕获,因此您永远无法看到它们。

使用不使用gulp-watchify模块的Browserify和Watchify的官方Gulp recipe可能会取得更大的成功。

似乎问题是Gulp在发生错误时从未被告知。尝试使用此错误处理代码:

(error) => { 
    gutil.log('[error]', error); 
    this.emit('end');
}