目前,我正在关注此示例,了解如何在getInitialProps中重定向用户

https://github.com/zeit/next.js/wiki/Redirecting-in-%60getInitialProps%60

问题是,如果我想这样返回404,它将返回一个空白页面,而不是通常的Next.js 404错误页面。

context.res.writeHead(404)
context.res.end();

请注意,我知道使用ExpressJ和使用状态码404都可以,但是,对于此项目,不允许使用ExpressJ,因此我需要使用典型的nodejs writeHead来执行。

最佳答案

为此,您必须在页面中呈现“错误”页面。

您可以执行以下操作:

import React from 'react'
import ErrorPage from 'next/error'

class HomePage extends React.Component {
  static async getInitialProps(context) {
    try {
      const data = await retrieveSomeData()
      return { data }
    } catch (err) {
      // Assuming that `err` has a `status` property with the HTTP status code.
      if (context.res) {
        context.res.writeHead(err.status)
      }
      return { err: { statusCode: err.status } }
    }
  }

  render() {
    const { err, data } = this.props

    if (err) {
      return <ErrorPage statusCode={err.statusCode} />
    }

    /*
     * return <Something data={data} />
     */
  }
}

如果您有一个自定义错误页面,则不必导入next/error,而必须导入您的自定义_error页面。

关于javascript - Next.js在getInitialProps中返回404错误页面,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47586505/

10-12 00:21
查看更多