reactjs - 带有Express服务器的Next.js如何调用自定义错误页面?

标签 reactjs express error-handling next.js

我的Next.js应用程序中有一个表达中间件,可以将错误传递给表达实例:

function (req, res, expressNext) {
   //Returns an error:  
   expressNext(err)
}
我不明白如何从我的Express Error处理程序函数呈现Error自定义页面。
我重现一个问题示例here,其中:
  • 我的基本路径设置为“/preferences”(next.config.js)
  • 将返回错误的中间件附加到“/preferences”(see)
  • 和我的错误处理程序:
  • 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/

    相关文章:

    Python try- except 循环中的多个值,如果引发任何异常则跳过当前迭代

    javascript - 类名绑定(bind)和全局类

    javascript - 使用 Webpack 2 延迟加载样式表

    node.js - React Redux - 将多个存储增强器传递给 createStore() 时出错

    javascript - LinkedIn API历史关注者调用返回http状态代码500

    javascript - SSL 版本或密码不匹配 ExpressJS

    javascript - 重定向到另一个页面: NodeJs

    service - 如何在Windows Service应用程序中向用户创建提示/通知?

    c - 使用 scanf 进行错误检查

    javascript - 我可以从node_modules修改包吗?