使用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中append、insertBefore、after与insertAfter的简单用法与注意事项
Apr 04 Javascript
jquery isType() 类型判断代码
Feb 14 Javascript
jQuery源码中的chunker 正则过滤符分析
Jul 31 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
Jan 09 Javascript
js实现省市联动效果的简单实例
Feb 10 Javascript
简单实现js无缝滚动效果
Feb 05 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
Vue.js常用指令的使用小结
Jun 23 Javascript
JavaScript选取(picking)和反选(rejecting)对象的属性方法
Aug 16 Javascript
jQuery中extend函数简单用法示例
Oct 11 jQuery
详解Vscode中使用Eslint终极配置大全
Nov 08 Javascript
vue el-table实现行内编辑功能
Dec 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
PHP 数组实例说明
2008/08/18 PHP
PHP Undefined index报错的修复方法
2011/07/17 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
php函数实现判断是否移动端访问
2015/03/03 PHP
修改Laravel5.3中的路由文件与路径
2016/08/10 PHP
Laravel框架实现利用监听器进行sql语句记录功能
2018/06/06 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
超强的IE背景图片闪烁(抖动)的解决办法
2007/09/09 Javascript
Javascript hasOwnProperty 方法 & in 关键字
2008/11/26 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
jQuery初学:find()方法及children方法的区别分析
2011/01/31 Javascript
利用jquery的获取JS文件中的字符串内容
2012/02/14 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
浅谈javascript原型链与继承
2015/07/13 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
axios 处理 302 状态码的解决方法
2018/04/10 Javascript
electron中使用bootstrap的示例代码
2018/11/06 Javascript
vue element upload实现图片本地预览
2019/08/20 Javascript
JS指定音频audio在某个时间点进行播放
2020/11/28 Javascript
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python键盘输入转换为列表的实例
2018/06/23 Python
PyCharm的设置方法和第一个Python程序的建立
2019/01/16 Python
python 实现敏感词过滤的方法
2019/01/21 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
python实现飞行棋游戏
2020/02/05 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
html5中为audio标签增加停止按钮动作实现方法
2013/01/04 HTML / CSS
天网面试题
2013/04/07 面试题
上课说话检讨书大全
2014/01/22 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
2015元旦晚会主持人开场白+结束语
2014/12/14 职场文书
写给导师的自荐信
2015/03/06 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书