用node.js显示错误

我希望能够发送一个友好的错误消息给我的用户,只要我不能连接到我的MongoDB服务器内部的node.js,而不是像现在这样只是把node.js吓坏了。

显然这不会工作,因为我不能从外部路由方法( app.get('/' ... )访问响应variables,所以我应该怎么做呢?
没有必要显示一些奇特的东西,但只是通知用户一个临时的问题将是惊人的。

 mongoose.connect('mongodb://localhost/test', function(err) { if (err) { //response.send('Temporary problem', 500); } }); // Routes app.get('/', index.index); //... And so on 

如果发生连接错误,您可以使用替代路由,因此在每个请求处理程序中执行连接检查都不是必需的。

 function connect() { mongoose.connect(connStr, function(err) { if (err) { // all GET requests will end with error message app.get('*', function(req, res) { res.end('DB error'); }); // handle errors, retry connection attempt or something... app.listen(...); return; } // Routes app.get('/', index.index); //... And so on app.listen(...); }; } var app = express.createServer(); connect(); 

你应该find一种方法来放弃路由'*'当你的连接将会启动。

在express中显示中间件时出错。 把它放在你的路由器之后。

 app.use(express.errorHandler({ dumpExceptions: true })); 

您可以通过调用路由中的next()来使用它

 app.get('/user/:userId', function(req, res, next){ User.get(req.params.userId, function(err, user){ if (err) return next(err); res.send('user ' + user.name); }); }); 

您可以从块中设置一个全局variables

 mongoose.connect('mongodb://localhost/test', function(err) { if (err) { //response.send('Temporary problem', 500); } }); 

如果这个全局variables是true / false / …,则在你的路由方法中相应的行为。

不是最漂亮的方法,但它会工作,很容易实现。