使用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 屏蔽一个区域内的所有元素,禁止输入
Oct 22 Javascript
ECMAScript 6即将带给我们新的数组操作方法前瞻
Jan 06 Javascript
js变形金刚文字特效代码分享
Aug 20 Javascript
JS实现样式清新的横排下拉菜单效果
Oct 09 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
AngularJs IE Compatibility 兼容老版本IE
Sep 01 Javascript
jQuery Validate让普通按钮触发表单验证的方法
Dec 15 Javascript
jquery实现自适应banner焦点图
Feb 16 Javascript
微信小程序--组件(swiper)详细介绍
Jun 13 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
vue项目在线上服务器访问失败原因分析
Aug 14 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
Sep 21 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
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
php实现图片按比例截取的方法
2017/02/06 PHP
php多文件打包下载的实例代码
2017/07/12 PHP
PHP之header函数详解
2021/03/02 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
js操作textarea 常用方法总结
2012/12/03 Javascript
JavaScript的事件绑定(方便不支持js的时候)
2013/10/01 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
JavaScript用Number方法实现string转int
2014/05/13 Javascript
document.write的几点使用心得
2014/05/14 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
jQuery基础知识点总结(必看)
2016/05/31 Javascript
IE下JS保存图片的简单实例
2016/07/15 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
Vue中的异步组件函数实现代码
2018/07/20 Javascript
超好用的jQuery分页插件jpaginate用法示例【附源码下载】
2018/12/06 jQuery
H5+css3+js搭建带验证码的登录页面
2020/10/11 Javascript
[01:24:16]2018DOTA2亚洲邀请赛 4.6 全明星赛
2018/04/10 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
用Python脚本生成Android SALT扰码的方法
2013/09/18 Python
Python 装饰器深入理解
2017/03/16 Python
Python实现Kmeans聚类算法
2020/06/10 Python
python机器人运动范围问题的解答
2019/04/29 Python
Python多线程获取返回值代码实例
2020/02/17 Python
tensorflow 20:搭网络,导出模型,运行模型的实例
2020/05/26 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
2020/09/03 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
NBA欧洲商店(法国):NBA Europe Store FR
2016/10/19 全球购物
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
学校百日安全生产活动总结
2014/07/05 职场文书
色戒观后感
2015/06/12 职场文书
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
i5-10400f处理相当于i7多少水平
2022/04/19 数码科技