gpt4 book ai didi

node.js - 来自ajax的nodeJs表达请愿书不显示错误页面

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:55 24 4
gpt4 key购买 nike

我有一个配置来为带有错误处理程序的网站提供服务。它适用于 app.post 请求,但不适用于 ajax 请愿。

这是我的错误处理中间件,其中包含正常工作的错误路径错误示例:

//Bad path error
app.get('*', function(req, res, next){
next('404'); //This works fine
});

//Errors control Middleware
app.use(function (err, req, res, next) {
if (typeof (err) === 'string') {
var lang = require(path.join(__dirname, '_public', 'errors', 'lang', process.env.LANG + '.js'));
return res.render(path.join(__dirname, '_public', 'errors', err), {lang});
} else {
log.error(err);
var lang = require(path.join(__dirname, '_public', 'errors', 'lang', process.env.LANG + '.js'));
return res.render(path.join(__dirname, '_public', 'errors', '500'), {lang});
}
});

当我导航到错误的网址(我的服务器上未定义的某些网址)时,它会正确转到定义的错误页面(404,即 .hbs)。问题是这个方法似乎不像下一个方法那样适用于 ajax 请愿:

jQuery.ajax({
type: 'POST', //I have the same problem with 'GET'
url: '/componentName/methodName',
data: {
accessToken: localStorage.token
},
}).then(function success(data) {
//TODO
}, function error(err) {
console.log(err);
})

这段代码用于服务器端:

app.post("/componentName/methodName", function (req, res, next) {
var token = req.body.accessToken;
var decodedToken = jwt.decode(token);
var user_id = decodedToken.payload.user_id;
model.getTasks(user_id).then(function (modelData) {
res.send(modelData); //This works fine
}, function () {
next('500'); //This broke the page and doesn't show error page
});
});

没有显示ajax错误可能是什么问题?我的语法正确吗?

新:问题必须出在ajax成功上,因为如果我在ajax和app.get路由中通过'get'更改'post',我仍然遇到同样的问题,但如果我直接从URL(而不是ajax)调用该方法,它就可以工作。有什么想法吗?

new2:如果我将此代码放入成功:

jQuery('body').html(data);

几秒钟后显示错误页面。当服务器发生任何错误时,我需要自动执行此操作(并且没有那几秒),因为我不知道它是否会正常,或者是否是错误,并且滞后秒也是一个问题。也许服务器上的任何东西都可能出错?它将错误页面注入(inject)到旧页面中,所以这不是解决方案

最佳答案

model.getTasks(user_id).then(function (modelData) {
res.send(modelData); //This works fine
}).catch(function () {
next('500');
})

使用 catch block

关于node.js - 来自ajax的nodeJs表达请愿书不显示错误页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56442155/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com