【问题标题】:Get context in nextjs在 nextjs 中获取上下文
【发布时间】:2021-02-27 19:07:41
【问题描述】:

我正在使用 Next.js,我想获取 _app.js 中的 auth0 数据。

AppComponent.getInitialProps = async (ctx) => {
  const { req, res } = ctx;
  const tokenCache = auth0.tokenCache(req, res);
  const { datToken } = await tokenCache.getAccessToken();

  return { t: datToken }
}

但是当我这样做时,我得到:

Server Error
Error: Request is not available

为什么会出现此错误,以及如何从_app.js 中的 auth0 获取数据?

【问题讨论】:

    标签: next.js


    【解决方案1】:

    _app 级别,getInitialProps 的第一个参数是AppContext 类型,它没有reqres

    相反,它有ctx,它的类型是NextPageContext,并且有这些。

    所以尝试替换

    const { req, res } = ctx;

    const { req, res } = ctx.ctx;

    此外,如果您愿意,您可以考虑将参数重命名为 appContext

    【讨论】:

    • 它正在工作,但是当我想更改路线时,我得到:Error in error page getInitialProps: Error: The tokenCache method can only be used from the server side。但是当我更改路线时,我需要每次在每个页面中都保留该令牌。有什么问题?
    • 好吧,我认为您需要检查您的代码是否仅在服务器上运行。例如,您可以通过这样的检查来实现这一点 if(typeof document === 'undefined') { // 表示我们在服务器上 } 如果您希望在导航期间保留它,请将 React 状态存储在您_app.js。并从那里访问它。
    猜你喜欢
    • 2019-06-05
    • 1970-01-01
    • 2019-08-29
    • 2013-05-31
    • 1970-01-01
    • 2020-07-25
    • 1970-01-01
    • 2014-01-30
    • 2011-09-20
    相关资源
    最近更新 更多