js应用举办错误管理的主意,浅谈NodeJs之数据库万

2019-07-07 04:41 来源:未知
var http = require('http'),
  httpProxy = require('http-proxy');

var proxy = httpProxy.createProxyServer({});

var server = http.createServer(function(req, res) {


 proxy.web(req, res, { target: 'http://www.cnblogs.com/xiaopen/' });
});

console.log("listening on port 5050")
server.listen(5050);
var pool = require('../db.js');
var runtimeLog = require('../log.js').getLogger('runlog');
var Promise = require('bluebird');

function queryPromise(queryString) {
  return new Promise(function(resolve, reject) {
    pool.getConnection(function(err, connection) {

      //connection.query(queryString, function(err, rows, fields) {

      // if (!err) {
      //   resolve(rows);
      //  } else {
      //   runtimeLog.error(err)
      //   reject(err)
      //  }
      // connection.release();
      //});
    })
  })
}

module.exports = function() {
  return new Promise(function(resolve, reject) {

    queryPromise("select * from wb123_home_map GROUP BY onestair")
      .then(function(results){
        resolve(results);

      })
      .catch(function(err){
        runtimeLog.error(err)
      })
  })
}

其能给您提供四个raygun客户端,您能够用它来布局您的APIkey,并且能够用来手动发送错误音信. 但稍后您大概会说, “笔者不想手动地把所有的不当都发给Raygun,那样听上去疑似有恢宏的专业要做!” 纵然你正用着 express.js ,那么用express的管理器就能够很轻松化解那份思念了.  

接下来如期运转精确。

此地大家有意将数据库链接的端口号填错,写成330666:

设若你筹划早先这么做了,那你就务须领会其含义. 但二个日子气泡一直回到事件循环的时候,那么些事件将会被发出. 即使您为这一个事件增多了侦听器,那么默许的动作就不会再产生了. 私下认可的动作时打字与印刷出调用栈消息并退出进度. 触发这一个今后要是后续的话,那么您的node进度将会处于二个尚无被定义的景色中. node.js 文档非常涉及说您不应有选用那些事物,而它今后也许会被移除掉. 提出的代表方案是利用域 domains. 上面所突显的正是三个小而简单的例证,你能够观望raygun客户端是什么适配你对域的选取的.

以上那篇使用nodejs中httpProxy代理时候出现404极度的缓和格局正是笔者分享给大家的全体内容了,希望能给我们一个参考,也愿意我们多多帮衬脚本之家。

数据库链接错误

var raygun = require('raygun');
var raygunClient = new raygun.Client().init({ apiKey: 'your API key' });
app.use(raygunClient.expressHandler);

在代理哀告中,把伏乞头中的host给删除,立异代码如下:

数据库sql语句错误

期待那会你更加好的驾驭使用Raygun的Node.js中的错误处理.

下一场报错或许是404错误码。

var pool = require('../db.js');
var runtimeLog = require('../log.js').getLogger('runlog');
var Promise = require('bluebird');

function queryPromise(queryString) {
  return new Promise(function(resolve, reject) {
    pool.getConnection(function(err, connection) {

      connection.query(queryString, function(err, rows, fields) {
        //if (err) throw err;
        if (!err) {
          resolve(rows);
         } else {
          reject(err)
         }
        connection.release();
      });
    })
  })
}

module.exports = function() {
  return new Promise(function(resolve, reject) {

    queryPromise("select * from wb123_home_map GROUP BY onestairs")
      .then(function(results){
        resolve(results);

      })
      .catch(function(err){
        runtimeLog.error('[err]',err)
      })
  })
}
npm install raygun

斩草除根方案:

如下:

 

在店堂中采用nodejs营造代理服务器完结前后台分离,代码无法拿出去,然后出现httpProxy代理能源的时候老是出现404.明明被代理的接口是存在的。代码大概如下:

能够观看2个回调的地点都会有出错的恐怕。

在其余情况下您可能只是想用这种格局侦听未有被捕获的那多少个uncaughtException并发送错误消息.  

var http = require('http'),
  httpProxy = require('http-proxy');

var proxy = httpProxy.createProxyServer({});

var server = http.createServer(function(req, res) {

 delete req.headers.host;
 proxy.web(req, res, { target: 'http://www.cnblogs.com/xiaopen/' });
});

console.log("listening on port 5050")
server.listen(5050);
module.exports = {
  host:   '192.168.6.101',
  database: 'web123',
  user:   'root',
  password: 'passw0rd',
  protocol: 'mysql',
  port:   '330666',
  query:  {pool: true}
}
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);

你可能感兴趣的小说:

  • Nodejs异步回调的古雅管理办法
  • 浅谈NodeJs之数据库非凡处理
  • 深入分析Node.js相当管理中domain模块的行使办法
  • Node.js 异步分外的拍卖与domain模块深入分析
  • NodeJS管理Express中异步错误
  • 利用Raygun对Node.js应用实行错误处理的法子
  • Node错误管理笔记之挖坑类别教程
  • Nodejs异步回调之极度管理实例分析

你恐怕感兴趣的稿子:

  • Nodejs异步回调的古雅管理办法
  • 深入分析Node.js十分管理中domain模块的行使方法
  • 利用nodejs中httpProxy代理时候出现404十一分的消除措施
  • Node.js 异步非凡的拍卖与domain模块分析
  • NodeJS管理Express中异步错误
  • 行使Raygun对Node.js应用进行错误管理的不二等秘书技
  • Node错误管理笔记之挖坑种类教程
  • Nodejs异步回调之万分管理实例分析

您大概感兴趣的篇章:

  • Nodejs异步回调的幽雅管理情势
  • 浅谈NodeJs之数据库非常管理
  • 剖析Node.js极度管理中domain模块的运用方法
  • 应用nodejs中httpProxy代理时候出现404非常的缓和格局
  • Node.js 异步非凡的管理与domain模块分析
  • NodeJS管理Express中异步错误
  • Node错误管理笔记之挖坑体系教程
  • Nodejs异步回调之相当管理实例分析

据此就算运用了Promise大家得以一贯在catch中抓到上面抛出的不行。无需再去queryPromise函数中打日志格外了。

用大家的 raygun4node 包,能提供一种把你的Node.js错误发送给Raygun的福利办法. 它能够很容仪的选拔 npm 安装:  

报错音信:

var raygun = require('raygun');
var raygunClient = new raygun.Client().init({ apiKey: 'your API key' });
process.on('uncaughtException', function(err) {
 raygunClient.send(err);
});

这里有一篇stackoverflow管理错误的百般管用的问答node-js-best-practice-exception-handling

连绵不断清理错误!

能够阅览错误都以经过catch抛出。

那样的话,在大家链接数据库的时候是会出错的。

大家修改一下代码,将数据库链接填对,修改sql语句为不当的讲话。

[2017-01-05 14:40:14.518] [ERROR] runlog - [err] { [Error: ER_BAD_FIELD_ERROR: Unknown column 'onestairs' in 'group statement']
 code: 'ER_BAD_FIELD_ERROR',
 errno: 1054,
 sqlState: '42S22',
 index: 0 }
Error: ER_BAD_FIELD_ERROR: Unknown column 'onestairs' in 'group statement'
  at Query.Sequence._packetToError (E:zzzz_wb123managetrunkcodenod
....
[2017-01-05 13:27:59.648] [ERROR] runlog - [err] [RangeError: port should be >= 0 and < 65536: 330666]
RangeError: port should be >= 0 and < 65536: 330666
...

NodeJs版本:4.4.4

本文介绍了NodeJs之数据库相当管理,共享给大家,具体如下:

运用nodejs处理极其最辛勤可是,这里本人遗弃nodejs提供的domain和一部分第三方库专门管理的事物。操作数据库是我们常用的坚守。通过回调,我们那边会有比比较多err出没。

这里大家利用了promise,所以在导出的函数中,大家运用了catch,他会抓到queryPromise函数中的错误,并打字与印刷到日志中。

再者那是四个模块,大家将它导出了。

如上正是本文的全体内容,希望对我们的就学抱有支持,也期待大家多多协理脚本之家。

TAG标签: 韦德娱乐1946
版权声明:本文由韦德娱乐1946_韦德娱乐1946网页版|韦德国际1946官网发布于韦德娱乐1946网页版,转载请注明出处:js应用举办错误管理的主意,浅谈NodeJs之数据库万