错误处理程序Nodejs Redis Connect-domain失败

时间:2013-08-01 03:45:20

标签: node.js error-handling node-redis

我尝试使用connect-domain来处理错误。在大多数情况下它没问题,但它使用redis回调失败。如何解决这个问题?

这是我的应用

var http = require('http');
var express = require('express');
var connectDomain = require('connect-domain');
var redis = require("redis").createClient();

var app = express();
app.use(connectDomain());

app.get('/', function (req, res) {
    throw new Error("Handler OK");
});

app.get('/error', function (req, res) {
    redis.get("akey", function(err, reply) {
        throw new Error("Handler error");
        res.end("ok");
    });
});

app.use(function (err, req, res, next) {
    res.end(err.message);
});

http.createServer(app).listen(8989, function() {
    console.log("Express server started ");
});

我使用nodejs 0.8.16,所有模块都是最新的

2 个答案:

答案 0 :(得分:8)

不确定域是否应该捕获 - 但是您可以通过设置错误处理程序来捕获redis错误,如下所示:

// handle redis connection temporarily going down without app crashing
redisClient.on("error", function(err) {
    console.error("Error connecting to redis", err);
});

当连接断开时,当redis尝试重新连接时,处理程序将继续被调用。如果它最终成功,一切都会在它自己的网上回归。

答案 1 :(得分:0)

您也可以尝试https://www.npmjs.org/package/wait-for-redis。它可以确保客户端可以等待服务器启动,以防客户端提前启动。