使用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 相关文章推荐
prototype Element学习笔记(篇一)
Oct 26 Javascript
JS input文本框禁用右键和复制粘贴功能的代码
Apr 15 Javascript
javascript使用isNaN()函数判断变量是否为数字
Sep 21 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 Javascript
jQuery使用之标记元素属性用法实例
Jan 19 Javascript
JavaScript实现页面无操作倒计时退出
Oct 22 Javascript
9个让JavaScript调试更简单的Console命令
Nov 14 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
Dec 14 Javascript
Jquery uploadify 多余的Get请求(404错误)的解决方法
Jan 26 Javascript
jquery实现图片上传前本地预览
Apr 28 jQuery
浅谈webpack 自动刷新与解析
Apr 09 Javascript
vue实现可视化可拖放的自定义表单的示例代码
Mar 20 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学习笔记 数组的常用函数
2011/06/13 PHP
使用php实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
ThinkPHP中数据操作案例分析
2015/09/27 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
JavaScript高级程序设计
2006/12/29 Javascript
javascript new后的constructor属性
2010/08/05 Javascript
理解Javascript_08_函数对象
2010/10/15 Javascript
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
JavaScript数组深拷贝和浅拷贝的两种方法
2014/04/16 Javascript
jQuery中last()方法用法实例
2015/01/06 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
JavaScript实现获得所有兄弟节点的方法
2015/07/23 Javascript
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
JavaScript中正则表达式使数字、中文或指定字符高亮显示
2017/10/31 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
2018/04/28 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
微信小程序实现拖拽功能
2019/09/26 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
[01:32:50]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第一场 1月25日
2021/03/11 DOTA
python3实现域名查询和whois查询功能
2018/06/21 Python
python读csv文件时指定行为表头或无表头的方法
2019/06/26 Python
Python中的 ansible 动态Inventory 脚本
2020/01/19 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
企业厂长岗位职责
2013/12/17 职场文书
餐厅经理岗位职责和岗位目标
2014/02/13 职场文书
我的老师教学反思
2014/05/01 职场文书
小升初自荐信范文
2015/03/05 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书
CSS3 制作的书本翻页特效
2021/04/13 HTML / CSS
Python re.sub 反向引用的实现
2021/07/07 Python