使用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 相关文章推荐
JavaScript 实现模态对话框 源代码大全
May 02 Javascript
offsetParent 算法分析
Apr 05 Javascript
IE6 fixed的完美解决方案
Mar 31 Javascript
A标签触发onclick事件而不跳转的多种解决方法
Jun 27 Javascript
js强制把网址设为默认首页
Sep 29 Javascript
基于javascript实现图片滑动效果
May 07 Javascript
Bootstrap popover用法详解
Dec 22 Javascript
html5+canvas实现支持触屏的签名插件教程
May 08 Javascript
jQuery获取随机颜色的实例代码
May 21 jQuery
vue-router懒加载速度缓慢问题及解决方法
Nov 25 Javascript
Node.js实现一个HTTP服务器的方法示例
May 13 Javascript
vue 实现用户登录方式的切换功能
Apr 14 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设计模式之命令模式的应用详解
2013/05/21 PHP
php实现根据url自动生成缩略图的方法
2014/09/23 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
纯CSS3实现质感细腻丝滑按钮
2021/03/09 HTML / CSS
符合标准的js表单提交的代码
2007/09/13 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
JavaScript function 的 length 属性使用介绍
2014/09/15 Javascript
JavaScript实现模仿桌面窗口的方法
2015/07/18 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
学习使用jquery iScroll.js移动端滚动条插件
2020/03/24 Javascript
JavaScript修改作用域外变量的方法
2016/03/25 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
ajax分页效果(bootstrap模态框)
2017/01/23 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
基于 Vue.js 之 iView UI 框架非工程化实践记录(推荐)
2017/11/21 Javascript
基于dataset的使用和图片延时加载的实现方法
2017/12/11 Javascript
vue-router中的hash和history两种模式的区别
2018/07/17 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
[03:52]显微镜下的DOTA2第三期——英雄在无聊的时候干什么
2014/06/20 DOTA
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
用Python写一个自动木马程序
2019/09/17 Python
python读文件的步骤
2019/10/08 Python
python调用HEG工具批量处理MODIS数据的方法及注意事项
2020/02/18 Python
详解PyQt5信号与槽的几种高级玩法
2020/03/24 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
python 监控logcat关键字功能
2020/09/04 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
html5 canvas实现给图片添加平铺水印
2019/08/20 HTML / CSS
解释一下ruby中的特殊方法与特殊类
2013/02/26 面试题
班组长岗位职责范本
2014/01/05 职场文书
开学典礼决心书
2014/03/11 职场文书
优秀教师个人总结
2015/02/11 职场文书
院系推荐意见
2015/06/05 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python