使用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 ECMA-262-3 深入解析.第三章.this
Sep 28 Javascript
js返回上一页并刷新代码整理
Dec 21 Javascript
js使用eval解析json实例与注意事项分享
Jan 18 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
May 23 Javascript
angularjs实现的前端分页控件示例
Feb 10 Javascript
angularjs定时任务的设置与清除示例
Jun 02 Javascript
JS实现评价的星星功能
Aug 20 Javascript
Vue实现自定义下拉菜单功能
Jul 16 Javascript
vue+springboot实现项目的CORS跨域请求
Sep 05 Javascript
微信小程序 如何保持登录状态
Aug 16 Javascript
Vue项目打包部署到iis服务器的配置方法
Oct 14 Javascript
Vue Element plus使用方法梳理
Dec 24 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使用数据库永久连接方式操作MySQL的是与非
2013/06/05 PHP
PHP 输出缓冲控制(Output Control)详解
2016/08/25 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
修改yii2.0用户登录使用的user表为其它的表实现方法(推荐)
2017/08/01 PHP
RSA实现JS前端加密与PHP后端解密功能示例
2019/08/05 PHP
浅谈laravel框架与thinkPHP框架的区别
2019/10/23 PHP
jquery下异步提交表单 异步跨域提交表单
2010/11/17 Javascript
js中使用DOM复制(克隆)指定节点名数据到新的XML文件中的代码
2011/07/27 Javascript
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
JQuery打造省市下拉框联动效果
2014/05/18 Javascript
JS实现简单的二元方程计算器功能示例
2017/01/03 Javascript
使用Webpack提高Vue.js应用的方式汇总(四种)
2017/07/10 Javascript
详解关于react-redux中的connect用法介绍及原理解析
2017/09/11 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
2018/03/01 Javascript
React SSR样式及SEO的实践
2018/10/22 Javascript
vue router总结 $router和$route及router与 router与route区别
2019/07/05 Javascript
Elementui表格组件+sortablejs实现行拖拽排序的示例代码
2019/08/28 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
js重写alert事件(避免alert弹框标题出现网址)
2020/12/04 Javascript
Python 迭代器与生成器实例详解
2017/05/18 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
2018/07/19 Python
使用Keras 实现查看model weights .h5 文件的内容
2020/06/09 Python
Canvas globalCompositeOperation
2018/12/18 HTML / CSS
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
C语言笔试集
2012/07/24 面试题
年度考核自我鉴定
2013/11/09 职场文书
销售会计工作职责
2013/12/02 职场文书
高中微机老师自我鉴定
2014/02/16 职场文书
学习十八大报告感言
2014/02/28 职场文书
综合办公室岗位职责
2015/04/11 职场文书
社区服务活动感想
2015/08/11 职场文书
2016年教师党员承诺书范文
2016/03/24 职场文书
超详细教你怎么升级Mysql的版本
2021/05/19 MySQL