Next.js getServerSideProps |函数的奇怪行为

Posted

技术标签:

【中文标题】Next.js getServerSideProps |函数的奇怪行为【英文标题】:Next.js getServerSideProps | Strange behavior for a function 【发布时间】:2021-11-10 00:41:34 【问题描述】:

函数的奇怪行为。 有时服务器请求的地址错误

console.log (url: context.req.url)

并打印到控制台

url: '/_next/data/development/en-gb/b.json?culture=en-gb'

这会破坏与当前请求地址相关的所有逻辑。 为什么会发生这种情况以及如何解决它

我正在使用标准函数的函数包装器

export function getServerSidePropsWithPageInitData(options: PropsOptions = ) 

  //redux-wrapper
  return wrapper.getServerSideProps((store) => 

    const  getState, dispatch  = store;

    return async function(context: GetServerSidePropsContext) 


      console.log( url: context.req.url ) // url: '/_next/data/development/en-gb/b.json?culture=en-gb'
      
      return  await getPageInitialData(serverContext);

      // some logic and return object look like
      //  props: key: value  
      // or redirect
      // redirect: 
      //  permanent: false,
      //  destination: destination
      // 
    ;
  )

【问题讨论】:

这能回答你的问题吗? getServerSideProps access current browser url 【参考方案1】:

使用resolvedUrl属性:

resolvedUrl:请求 URL 的规范化版本,去除客户端转换的 _next/data 前缀并包含原始查询值。

更多:https://nextjs.org/docs/basic-features/data-fetching#getserversideprops-server-side-rendering

【讨论】:

以上是关于Next.js getServerSideProps |函数的奇怪行为的主要内容,如果未能解决你的问题,请参考以下文章

Next.js 只运行一次 getServerSideProps,next/router 访问时不获取新数据

Next.js 中为啥没有通过 getServerSideProps 将 cookie 发送到服务器?

Next.js:在 getServerSideProps 中使用带有 TypeScript 的 next-redux-wrapper 调用 Thunks?

在 getServerSideProps() 中直接导入 next.js API 端点

Next.js - 页面没有让 GetServerSideProps 进入页面组件道具(使用自定义 _app.js)

Next.js 使用 getServerSideProps 如何将道具从页面传递到组件?