从nextjs的_error.js中的getInitialProps重定向?

时间:2020-01-15 07:01:09

标签: next.js

是否可以通过nextjs中的 _error.js 中的getInitialProps重定向到另一个URL?

已经在getInitialProps中尝试过 res.redirect('/');

它给 TypeError:res.redirect不是函数

2 个答案:

答案 0 :(得分:2)

尽管,从_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大小写。

此外,我建议您重新考虑您的方法。 _error.js用于处理404和500错误,您不需要在此级别进行重定向。


如果您要导入Error component,则不会触发getInitialProps中的_error.js

答案 1 :(得分:0)

尝试一下?

YourPage.getInitialProps = async (ctx) => {
  ctx.res.writeHead(302, {
    Location: '/some_url',
    'Content-Type': 'text/html; charset=utf-8',
  });
  ctx.res.end();
     
  return {};
};