微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 捕捉Browserify解析错误(独立选项)

我使用gulp browserify来构建和打包我的javascript库。现在有一件事情让我感到困扰:我正在运行一个简单的服务器,通过gulp进行livereload的开发。这工作正常,但是每当我的javascript包含语法错误browserify会抛出一个错误,导致服务器停止。

我使用的browserify代码(请注意,我添加一个错误处理程序):

browserify("./src/main.js")
   .bundle({standalone: "SomeName",debug: false}).on('error',notify.onError({
            message: "Error: <%= error.message %>",title: "Failed running browserify"
    })
);

现在有趣的部分是:
当我删除独立的设置(和我的js语法错误),错误处理程序触发。但是,当我使用这个独立设置时,错误处理程序不会触发(导致gulp停止启动服务器)

有人知道如何处理这个问题吗?我可以随时在gulp手动验证我的js文件,但是想避免这种解决方法

解决方法

on(‘error’)事件仍然被触发。然而,浏览流与其他Gulp流有点不同。在browserify的错误处理函数中,需要显式调用this.emit(“end”)

一个例子gulp任务

var browserify = require('browserify');
var gulp = require('gulp');
var source = require("vinyl-source-stream");
var reactify = require('reactify');

gulp.task('browserify',function(){
  // create new bundle
  var b = browserify();
  // add transform if you want
  b.transform(reactify);
  // add file to browserify
  b.add("./src/main.js");
  // start bundling
  return b.bundle()
    .on('error',function(err){
      // print the error (can replace with gulp-util)
      console.log(err.message);
      // end this stream
      this.emit('end');
    })
    .pipe(source('main.js'))
    // pipe other plugin here if you want
    .pipe(gulp.dest('./dist'));
});

错误函数处理程序阻止gulp崩溃,this.emit(“end”)停止当前流,不让它运行到下一个管道。事件处理程序也可以捕获变形插件中的错误

欲了解更多信息,您可以在这里阅读http://truongtx.me/2014/07/15/handle-errors-while-using-gulp-watch/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐