目前,我正在关注此示例,了解如何在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/