使用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 相关文章推荐
火狐浏览器(firefox)下获得Event对象以及keyCode
Nov 13 Javascript
js打印纸函数代码(递归)
Jun 18 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
Jan 12 Javascript
用Js实现的动态增加表格示例自己写的
Oct 21 Javascript
浏览器缩放检测的js代码
Sep 28 Javascript
javascript实现表格排序 编辑 拖拽 缩放
Jan 02 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
浅谈toLowerCase和toLocaleLowerCase的区别
Aug 15 Javascript
获取当前月(季度/年)的最后一天(set相关操作及应用)
Dec 27 Javascript
全面解析jQuery中的$(window)与$(document)的用法区别
Aug 15 jQuery
详解VueRouter进阶之导航钩子和路由元信息
Sep 13 Javascript
使用mixins实现elementUI表单全局验证的解决方法
Apr 02 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
SONY SRF-22W(33W)的电路分析和维修案例
2021/03/02 无线电
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
php中file_exists函数使用详解
2015/05/08 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
phpStorm2020 注册码
2020/09/17 PHP
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
js中格式化日期时间型数据函数代码
2010/11/08 Javascript
JavaScript开发人员的10个关键习惯小结
2014/12/05 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
canvas绘制七巧板
2017/02/03 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
详解VUE单页应用骨架屏方案
2019/01/17 Javascript
vue实现二级导航栏效果
2019/10/19 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
[10:53]2018DOTA2国际邀请赛寻真——EG
2018/08/11 DOTA
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python中随机函数random用法实例
2015/04/30 Python
Python 多进程并发操作中进程池Pool的实例
2017/11/01 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Python操作qml对象过程详解
2019/09/26 Python
在python中使用pyspark读写Hive数据操作
2020/06/06 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
Windows 平台做 Python 开发的最佳组合(推荐)
2020/07/27 Python
用Python制作音乐海报
2021/01/26 Python
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
自荐信怎么写
2015/03/04 职场文书
第一节英语课开场白
2015/06/01 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
Vue监视数据的原理详解
2022/02/24 Vue.js