使用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的变量作用域深入理解
Oct 25 Javascript
JavaScript中setMonth()方法的使用详解
Jun 11 Javascript
手机端转盘抽奖代码分享
Sep 10 Javascript
javascript实现下拉提示选择框
Dec 29 Javascript
jQuery简单实现列表隐藏和显示效果示例
Sep 12 Javascript
vue2.0实现倒计时的插件(时间戳 刷新 跳转 都不影响)
Mar 30 Javascript
深入理解Node.js中通用基础设计模式
Sep 19 Javascript
详解 vue better-scroll滚动插件排坑
Feb 08 Javascript
ajax前台后台跨域请求处理方式
Feb 08 Javascript
vue插件实现v-model功能
Sep 10 Javascript
JavaScript如何判断对象有某属性
Jul 03 Javascript
React倒计时功能实现代码——解耦通用
Sep 18 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如何得到当前页和上一页的地址?
2006/11/27 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
基于simple_html_dom的使用小结
2013/07/01 PHP
CI框架中cookie的操作方法分析
2014/12/12 PHP
php实现向javascript传递数组的方法
2015/07/27 PHP
PHP输入流php://input实例讲解
2015/12/22 PHP
php实现购物车功能(上)
2020/07/23 PHP
Zend Framework教程之Zend_Db_Table表关联实例详解
2016/03/23 PHP
PHP中如何判断exec函数执行成功?
2016/08/04 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
PHP快速导出百万级数据到CSV或者EXCEL文件
2020/11/27 PHP
JavaScript调用堆栈及setTimeout使用方法深入剖析
2013/02/16 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
js和php如何获取当前url的内容
2013/09/22 Javascript
jQuery 获取和设置select下拉框的值实现代码
2013/11/08 Javascript
javascript截取字符串小结
2015/04/28 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
jQuery实现图片渐入渐出切换展示效果
2015/08/15 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
王纯业的Python学习笔记 下载
2007/02/10 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
python unittest实现api自动化测试
2018/04/04 Python
Flask之请求钩子的实现
2018/12/23 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
CentOS7安装Python3的教程详解
2019/04/10 Python
python获取txt文件词向量过程详解
2019/07/05 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Python实现FTP文件定时自动下载的步骤
2020/12/19 Python
请说出几个常用的异常类
2013/01/08 面试题
竞赛口号大全
2014/06/16 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
详解Vue项目的打包方式(生成dist文件)
2022/01/18 Vue.js
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript