从 nextjs _error.js 中的 getInitialProps 重定向?
Redirecting from getInitialProps in _error.js in nextjs?
有什么方法可以从 nextjs 中的 _error.js 中的 getInitialProps 重定向到另一个 url?
已经尝试 res.redirect('/'); inside getInitialProps.
它的给予
TypeError: res.redirect 不是函数
虽然我觉得这个来自 _error.js
的重定向不合适,但您可以尝试如下操作:
import Router from 'next/router'
// in your getInitialProps
if (res) { // server
res.writeHead(302, {
Location: '/'
});
res.end();
} else { // client
Router.push('/');
}
由于getInitialProps
可能在导航到不同的路由时在客户端执行,您还应该考虑添加else case。
此外,我建议您重新考虑您的方法。 _error.js
用于处理 404 和 500 错误,在此级别您不需要重定向。
如果您正在导入 Error component,_error.js
的 getInitialProps
将不会被触发。
试试这个?
YourPage.getInitialProps = async (ctx) => {
ctx.res.writeHead(302, {
Location: '/some_url',
'Content-Type': 'text/html; charset=utf-8',
});
ctx.res.end();
return {};
};
有什么方法可以从 nextjs 中的 _error.js 中的 getInitialProps 重定向到另一个 url?
已经尝试 res.redirect('/'); inside getInitialProps.
它的给予 TypeError: res.redirect 不是函数
虽然我觉得这个来自 _error.js
的重定向不合适,但您可以尝试如下操作:
import Router from 'next/router'
// in your getInitialProps
if (res) { // server
res.writeHead(302, {
Location: '/'
});
res.end();
} else { // client
Router.push('/');
}
由于getInitialProps
可能在导航到不同的路由时在客户端执行,您还应该考虑添加else case。
此外,我建议您重新考虑您的方法。 _error.js
用于处理 404 和 500 错误,在此级别您不需要重定向。
如果您正在导入 Error component,_error.js
的 getInitialProps
将不会被触发。
试试这个?
YourPage.getInitialProps = async (ctx) => {
ctx.res.writeHead(302, {
Location: '/some_url',
'Content-Type': 'text/html; charset=utf-8',
});
ctx.res.end();
return {};
};