使用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 26 Javascript
js中top/parent/frame概述及案例应用
Feb 06 Javascript
jQuery getJSON()+.ashx 实现分页(改进版)
Mar 28 Javascript
图标线性回归斜着移动到指定的位置
Aug 16 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
Angular中使用ui router实现系统权限控制及开发遇到问题
Sep 23 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
Apr 11 jQuery
详解vue-router基本使用
Apr 18 Javascript
Vue Ajax跨域请求实例详解
Jun 20 Javascript
vue和webpack打包项目相对路径修改的方法
Jun 15 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 Vue.js
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实现首页链接查询 友情链接检查的代码
2010/01/05 PHP
php线性表顺序存储实现代码(增删查改)
2012/02/16 PHP
destoon实现不同会员组公司名称显示不同的颜色的方法
2014/08/22 PHP
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
php编程每天必学之表单验证
2016/03/01 PHP
AJAX的使用方法详解
2017/04/29 PHP
详解将数据从Laravel传送到vue的四种方式
2019/10/16 PHP
Jquery练习之表单验证实现代码
2010/12/14 Javascript
jquery利用event.which方法获取键盘输入值的代码
2011/10/09 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
location.hash保存页面状态的技巧
2016/04/28 Javascript
JQuery validate插件Remote用法大全
2016/05/15 Javascript
JavaScript 数组some()和filter()的用法及区别
2016/05/20 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
微信JSSDK调用微信扫一扫功能的方法
2017/07/25 Javascript
详解react-router4 异步加载路由两种方法
2017/09/12 Javascript
axios全局请求参数设置,请求及返回拦截器的方法
2018/03/05 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
解决Vue router-link绑定事件不生效的问题
2020/07/22 Javascript
Python标准库defaultdict模块使用示例
2015/04/28 Python
python同时给两个收件人发送邮件的方法
2015/04/30 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
详解python metaclass(元类)
2020/08/13 Python
用python实现一个简单计算器(完整DEMO)
2020/10/14 Python
Bergfreunde丹麦:登山装备网上零售商
2017/02/26 全球购物
学生安全教育材料
2014/02/14 职场文书
村级四风对照检查材料
2014/08/24 职场文书
房地产端午节活动方案
2014/08/24 职场文书
教师个人师德总结
2015/02/06 职场文书
Python函数中的不定长参数相关知识总结
2021/06/24 Python