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/

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...