Nextjs:getStaticProps 中未定义的上下文

Posted

技术标签:

【中文标题】Nextjs:getStaticProps 中未定义的上下文【英文标题】:Nextjs: context undefined in getStaticProps 【发布时间】:2021-02-04 15:01:21 【问题描述】:

来自 getStaticProps 的上下文未定义。 如果我 console.log 我得到的上下文: locales: undefined, locale: undefined

我需要来自 url 的信息... 如果我对 getServerSideProps 进行同样的尝试,它就可以工作。 我正在使用带有 nextjs 的 apollo,例如:https://github.com/vercel/next.js/tree/canary/examples/with-apollo

export async function getStaticProps(context) 
    const apolloClient = initializeApollo();

    await apolloClient.query(
        query: PAGE,
        variables: variables,
    );

    console.log(context);
    //  locales: undefined, locale: undefined 
    // !!! need the info from the URL !!!

    return 
        props: 
            initialApolloState: apolloClient.cache.extract(),
        ,
        revalidate: 1,
    ;

感谢任何帮助。

【问题讨论】:

【参考方案1】:

context 对象上不存在这些参数,这就是你得到undefined 的原因。我假设您将它们作为查询参数传递给 url。在这种情况下,您可以像这样从上下文查询参数中获取它们:

const  locales  = context.query

在下一个文档中了解更多关于 context 对象的参数 https://nextjs.org/docs/api-reference/data-fetching/getInitialProps

【讨论】:

以上是关于Nextjs:getStaticProps 中未定义的上下文的主要内容,如果未能解决你的问题,请参考以下文章

NextJS:通过上下文将字符串从输入传递到 getStaticProps

如何在 NextJS 中为 getStaticProps 导入 API 路由?

为啥 NextJS 中的 ApolloGraphQL 示例使用 getStaticProps 而不是 getServerSideProps

Nextjs:getStaticProps 中未定义的上下文

NextJS getStaticProps 没有将返回的道具传递给页面

如何干净地处理 nextjs getStaticProps 中的错误