我的Next.js应用程序中有一个表达中间件,可以将错误传递给表达实例:
function (req, res, expressNext) {
//Returns an error:
expressNext(err)
}
我不明白如何从我的Express Error处理程序函数呈现Error自定义页面。我重现一个问题示例here,其中:
function errorHandler(err, req, res, next) {
console.log("ERROR HANDLER WITH ERROR", err);
res.status(err);
return app.render(req, res, '/_error', req.query);
}
但是,不是呈现_next.js
组件,而是返回状态码为500的所有 Assets :它可以正确访问错误处理程序;我怎么了
最佳答案
我找到了解决方案:
中间件:
server.use('/favorites', async (req, res, nextFunction) => {
//Log and Handle error only for the HTML page
if (req.path === '/') {
nextFunction(500)
} else {
nextFunction();
}
});
错误处理程序:async function errorHandler(err, req, res, next): Promise<void> {
res.status(500);
const error = await app.renderToHTML(req, res, '/_error');
res.send(error);
}
关于reactjs - 带有Express服务器的Next.js如何调用自定义错误页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64944786/