Browserify - 强制bundle()在找不到模块时抛出错误

时间:2016-11-11 09:52:15

标签: javascript node.js gulp browserify commonjs

我正在使用浏览器gulp。我有一个bundle()函数,如下所示:

    function bundle(script) {

      return browserify( get_browserify_config(script) )
        .bundle()
        .on('error', function(err){
            notifyError('error while bundling ' + script );
            console.log('-- error while bundling ' + script + ' --');
            errorLog(err);
        })
        .pipe(source(script))
        .on('error', errorLog)
        .pipe(buffer())
        .pipe(gulpIf(!isProductionBuild, sourcemaps.init()))
        .pipe(uglify())
        .on('error', errorLog)
        .pipe(gulpIf(!isProductionBuild, sourcemaps.write('./')))
        .pipe(gulp.dest(PATH_TO_SERVE_SCRIPTS))
        .on('error', errorLog)
        .pipe(gulp.dest(PATH_TO_TARGET_SCRIPTS))
        .on('error', errorLog)
        .on('end', function() {
            jsLog('finished bundle of ' + script);
        });
}

当我传递具有有效require依赖关系的脚本时,它工作正常。但是,如果我有错误的依赖项,它不会抛出任何错误。

例如,如果我有一个文件'app.js',它需要一个不存在的模块,如:

require('./xyzrandomnotexistingmodulename');

我在捆绑过程中没有收到任何错误。我只是在PATH_TO_TARGET_SCRIPTS上得到一个app.js捆绑文件,只是抱怨找不到模块:

!function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var a="function"==typeof require&&require;if(!f&&a)return a(i,!0);if(u)return u(i,!0);var c=new Error("Cannot find module '"+i+"'");throw c.code="MODULE_NOT_FOUND",c}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n?n:r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}({},{},[]);

我更希望浏览器能够停止捆绑并抛出错误,而不是生成不工作的捆绑包。

有没有办法将browserify配置为抛出错误或发出错误事件,而不是在找不到模块时静默继续捆绑?

0 个答案:

没有答案