我想自定义在触发超时错误时发送给用户的响应。更具体地说,我想将它们重定向到静态页面,解释为什么会引发超时错误。
我想写一些类似的东西:
var express = require('express')
var timeout = require('connect-timeout')
var app = express();
var port = process.env.PORT || 8080;
app.use(timeout(10,{"respond":true}));
app.use(haltOnTimedout);
// GET ROUTES HERE
app.listen(port, function() {
console.log('Our app is running on port '+ port);
});
function haltOnTimedout(req,res,next) {
if (req.timedout) {
res.redirect('/timedout.html');
} else {
next();
}
};
上面的代码没有按预期工作:即使触发超时,它也不会将用户重定向到静态网页timedout.html
,相反它会抛出错误ServiceUnavailableError: Response timeout
是否可以做这样的事情或者我错过了什么?
我终于找到了答案,如果有人遇到同样的问题,我会将其发布在这里。
我将以下代码行放在我的最后server.js
code :
app.use(haltOnTimedout);
function haltOnTimedout(err,req,res,next) {
if (req.timedout === true) {
if (res.headersSent) {
next(err);
} else {
res.redirect('/timedout.html');
}
} else {
next();
}
};
and add if (!req.timedout) { res.send(something);}
在所有路由中以避免标头的重复发送。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)