使用Raygun对Node.js应用进行错误处理的方法


Posted in Javascript onJune 23, 2015

用我们的 raygun4node 包,能提供一种把您的Node.js错误发送给Raygun的便利办法. 它可以很容仪的使用 npm 安装:
 

npm install raygun

其能给您提供一个raygun客户端,您可以用它来配置您的API key,并且可以用来手动发送错误消息. 但稍后你可能会说, “我不想手动地把所有的错误都发给Raygun,那样听起来像是有大量的工作要做!” 如果你正用着 express.js ,那么用express的处理器就可以很容易解决这份担忧了.
 

var raygun = require('raygun');
var raygunClient = new raygun.Client().init({ apiKey: 'your API key' });
app.use(raygunClient.expressHandler);

在其它情况下你可能只是想用这种方式侦听没有被捕获的异常uncaughtException并发送错误消息.
 

var raygun = require('raygun');
var raygunClient = new raygun.Client().init({ apiKey: 'your API key' });
process.on('uncaughtException', function(err) {
 raygunClient.send(err);
});

如果你打算开始这样做了,那你就必须理解其含义. 但一个时间气泡一直回到事件循环的时候,这个事件将会被发出. 如果你为这个事件添加了侦听器,那么默认的动作就不会再发生了. 默认的动作时打印出调用栈信息并退出进程. 触发这个之后如果继续的话,那么你的node进程将会处在一个没有被定义的状态中. node.js 文档特别提到说你不应该使用这个东西,而它未来可能会被移除掉. 建议的替代方案是使用域 domains. 下面所展示的就是一个小而简单的例子,你可以看到raygun客户端是怎样适配你对域的使用的.

 

var domain = require('domain');
var raygun = require('raygun');
var raygunClient = new raygun.Client().init({ apiKey: 'your API key' });
var server = require('http').createServer(function (req, res) {
 var d = domain.create();
 d.on('error', function (err) {
  raygunClient.send(err);
  // clean up and end
 });
 d.add(req);
 d.add(res);
 d.run(function () {
  // handle the req, res
 });
});
server.listen(3000);

希望这会你更好的理解使用Raygun的Node.js中的错误处理.

持续清理错误!

Javascript 相关文章推荐
JQuery优缺点分析说明
Jun 09 Javascript
document.documentElement的一些使用技巧
Apr 18 Javascript
javascript实现继承的简单实例
Jul 26 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
May 09 Javascript
JS递归遍历对象获得Value值方法技巧
Jun 14 Javascript
JS实现图片局部放大或缩小的方法
Aug 20 Javascript
AngularJS实现的省市二级联动功能示例【可对选项实现增删】
Oct 26 Javascript
javascript按顺序加载运行js方法
Dec 01 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
vue-cli3.0+element-ui上传组件el-upload的使用
Dec 03 Javascript
vue+element项目中过滤输入框特殊字符小结
Aug 07 Javascript
用webAPI实现图片放大镜效果
Nov 23 Javascript
javascript创建函数的20种方式汇总
Jun 23 #Javascript
使用Node.js实现HTTP 206内容分片的教程
Jun 23 #Javascript
jquery.gridrotator实现响应式图片展示画廊效果
Jun 23 #Javascript
使用JavaScript实现旋转的彩圈特效
Jun 23 #Javascript
在Node.js中使用HTTP上传文件的方法
Jun 23 #Javascript
Js+php实现异步拖拽上传文件
Jun 23 #Javascript
javascript框架设计之类工厂
Jun 23 #Javascript
You might like
php实现从ftp服务器上下载文件树到本地电脑的程序
2009/02/10 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
2012/12/10 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
laravel model模型定义实现开启自动管理时间created_at,updated_at
2019/10/17 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
如何用JavaScript定义一个类
2014/09/12 Javascript
javascript委托(Delegate)blur和focus用法实例分析
2015/05/26 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
jquery中取消和绑定hover事件的实现代码
2016/06/02 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
thinkjs之页面跳转同步异步操作
2017/02/05 Javascript
angularJS模态框$modal实例代码
2017/05/27 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
ionic2懒加载配置详解
2017/09/01 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
微信小程序外卖选购页实现切换分类与数量加减功能案例
2019/01/15 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
vue使用swiper实现中间大两边小的轮播图效果
2019/11/24 Javascript
vant-ui AddressEdit地址编辑和van-area的用法说明
2020/11/03 Javascript
Python标准库之collections包的使用教程
2017/04/27 Python
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python中collections模块的基本使用教程
2018/12/07 Python
ubuntu 16.04下python版本切换的方法
2019/06/14 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Python tkinter实现图片标注功能(完整代码)
2019/12/08 Python
优秀应届毕业生推荐信
2014/02/18 职场文书
元旦联欢会感言
2014/03/04 职场文书
采购意向书范本
2014/03/31 职场文书
中学生操行评语大全
2014/04/24 职场文书
2015年仓库工作总结
2015/04/09 职场文书
git stash(储藏)的用法总结
2022/06/25 Servers