首页 > 解决方案 > Next.js Router.push 没有设置任何 req.headers

问题描述

从另一个端点执行客户端 Router.push() 后,我在 getInitialProps 函数中执行后端查询时遇到问题。

这就是我的意思。在我的注册页面中,我调用 Router.push('/') 以返回主页:

  proceedToIndex = () => {
    Router.push('/');
  }

在我的“/”页面中,我调用 getInitialProps 如下:

  static async getInitialProps (context) {
    try {
      if (context.req.headers.cookie) {
          const resp = await getUser(context.apolloClient);

          if (resp.data.getUser && resp.data.getUser.id) {
            return { user: resp.data.getUser };
          }
      };
    } catch(e) {
      console.log(e);
    }
    return { user: undefined };
  }

我最终遇到了一个崩溃,说不能为 context.req.headers.cookie 调用未定义的 cookie。因此,当我执行 Router.push('/') 时,标题是未定义的。这里发生了什么以及如何在上下文中将标头提供给我的请求对象?

标签: javascriptreactjsnext.js

解决方案


使用 Router.push 时没有请求。它是一个客户端 API,请求只存在于初始服务器渲染中。


推荐阅读