使用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 相关文章推荐
JS获取scrollHeight问题想到的标准问题
May 27 Javascript
Javascript算符的优先级介绍
Mar 20 Javascript
jQuery 删除/替换DOM元素的几种方式
May 20 Javascript
javascript进行数组追加方法小结
Jun 16 Javascript
JavaScript函数参数使用带参数名的方式赋值传入的方法
Mar 19 Javascript
jQuery UI插件自定义confirm确认框的方法
Mar 20 Javascript
javascript轻量级库createjs使用Easel实现拖拽效果
Feb 19 Javascript
利用css+原生js制作简单的钟表
Apr 07 Javascript
浅析javaScript中的浅拷贝和深拷贝
Feb 15 Javascript
记一次Vue.js混入mixin的使用(分权限管理页面)
Apr 17 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
Apr 20 Javascript
微信小程序用户授权,以及判断登录是否过期的方法
May 10 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原生模板引擎 最简单的模板引擎
2012/04/25 PHP
php缓存技术详细总结
2013/08/07 PHP
成为好程序员必须避免的5个坏习惯
2014/07/04 PHP
jQuery+php简单实现全选删除的方法
2016/11/28 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
微信小程序发送订阅消息的方法(php 为例)
2019/10/30 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
Node.js实现文件上传
2016/07/05 Javascript
jquery组件WebUploader文件上传用法详解
2020/10/23 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
详谈Ajax请求中的async:false/true的作用(ajax 在外部调用问题)
2017/02/10 Javascript
Vue结合SignalR实现前后端实时消息同步
2017/09/19 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
JavaScript解决浮点数计算不准确问题的方法分析
2018/07/09 Javascript
vue数据初始化initState的实例详解
2019/04/11 Javascript
抖音上用记事本编写爱心小程序教程
2019/04/17 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
vue 移动端记录页面浏览位置的方法
2020/03/11 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python3 实现调用串口功能
2019/12/26 Python
matplotlib源码解析标题实现(窗口标题,标题,子图标题不同之间的差异)
2021/02/22 Python
英国家庭、花园、汽车和移动解决方案:Easylife Group
2018/05/23 全球购物
接口中的方法可以是abstract的吗
2015/07/23 面试题
大学毕业感言50字
2014/02/07 职场文书
路政管理求职信
2014/06/18 职场文书
学校献爱心活动总结
2014/07/08 职场文书
临时租车协议范本
2014/09/23 职场文书
组织生活会表态发言材料
2014/10/17 职场文书
学习型家庭事迹材料
2014/12/20 职场文书
客服专员岗位职责范本
2015/04/07 职场文书
学校开除通知书
2015/04/25 职场文书
活动简报范文
2015/07/22 职场文书