使用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 01 Javascript
JS获取并操作iframe中元素的方法
Mar 21 Javascript
js中confirm实现执行操作前弹出确认框的方法
Nov 01 Javascript
JS+CSS实现实用的单击输入框弹出选择框的方法
Feb 28 Javascript
jquery图片切换插件
Mar 16 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
Mar 18 Javascript
Node.js操作mysql数据库增删改查
Mar 30 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
BootStrap实现轮播图效果(收藏)
Dec 30 Javascript
React Native中导航组件react-navigation跨tab路由处理详解
Oct 31 Javascript
Vue-cli3项目引入Typescript的实现方法
Oct 18 Javascript
JavaScript原始值与包装对象的详细介绍
May 11 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
mysql中存储过程、函数的一些问题
2007/02/14 PHP
分享PHP header函数使用教程
2013/09/05 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
2016/05/12 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
php使用环形链表解决约瑟夫问题完整示例
2018/08/07 PHP
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
详解NodeJs支付宝移动支付签名及验签
2017/01/06 NodeJs
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
捕获未处理的Promise错误方法
2017/10/13 Javascript
深入理解Vue nextTick 机制
2018/04/28 Javascript
详解如何在你的Vue项目配置vux
2018/06/04 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
Python 爬虫的工具列表大全
2016/01/31 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python 字符串和整数的转换方法
2018/06/25 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
django query模块
2019/04/20 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
python+rsync精确同步指定格式文件
2019/08/29 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
提供世界各地便宜的机票:Sky-tours
2016/07/21 全球购物
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
OPPO手机官方商城:中国手机市场出货量第一品牌
2017/10/18 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
小学生考试获奖感言
2014/01/30 职场文书
计划生育证明格式范本
2014/09/12 职场文书
幼儿园六一儿童节活动总结
2015/02/10 职场文书