在公司中使用nodejs构建代理服务器实现前后台分离,代码不能拿出来,然后出现httpProxy代理资源的时候老是出现404.明明被代理的接口是存在的。代码大概如下:
本文介绍了NodeJs之数据库异常处理,分享给大家,具体如下:
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);
NodeJs版本:4.4.4
然后报错或者是404错误码。
数据库链接错误
解决方案:
使用nodejs处理异常最麻烦不过,这里我抛开nodejs提供的domain
和一些第三方库专门处理的东西。操作数据库是我们常用的功能。通过回调,我们这里会有很多err出没。
在代理请求中,把请求头中的host给删除,改进代码如下:
如下:
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);
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)
})
})
}
然后如期运行正确。
可以看到2个回调的地方都会有出错的可能。
以上这篇使用nodejs中httpProxy代理时候出现404异常的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
并且这是一个模块,我们将它导出了。
您可能感兴趣的文章:
- Nodejs异步回调的优雅处理方法
- 浅谈NodeJs之数据库异常处理
- 解析Node.js异常处理中domain模块的使用方法
- vnsc5858威尼斯城官网,Node.js 异步异常的处理与domain模块解析
- NodeJS处理Express中异步错误
- 使用Raygun对Node.js应用进行错误处理的方法
- Node错误处理笔记之挖坑系列教程
- Nodejs异步回调之异常处理实例分析
这里我们故意将数据库链接的端口号填错,写成330666:
module.exports = {
host: '192.168.6.101',
database: 'web123',
user: 'root',
password: 'passw0rd',
protocol: 'mysql',
port: '330666',
query: {pool: true}
}
这样的话,在我们链接数据库的时候是会出错的。
这里我们使用了promise,所以在导出的函数中,我们使用了catch,他会抓到queryPromise函数中的错误,并打印到日志中。
编辑:计算机教程 本文来源:浅谈NodeJs之数据库异常处理
关键词: