NextJS SSR中的Axios Z_BUFF_ERROR

isr3a4wc  于 2023-04-30  发布在  iOS
关注(0)|答案(1)|浏览(128)

问题

我有一个NextJS应用程序,可以从SSR的API中预取一些数据(在服务器和客户端使用相同的数据获取函数)。在客户端,它工作得很好。在服务器端(Vercel),我得到this error

示例代码

这就是返回错误的原因

const http = axios.create({ baseURL: apiURL() })
export const fetchProjects = (tags: string[] | number[] = [], page: number = 1 ) => async () =>
  (await(http.get(`${appConfig.PROJECTS_ENDPOINT}?${queryString({tags, page})}`))).data

和这个一样

export const fetchProjects = (tags: string[] | number[] = [], page: number = 1 ) => async (): Promise<any> => (
  axios.get(`${apiURL()}${appConfig.PROJECTS_ENDPOINT}?${queryString({tags, page})}`, {
    headers: {
      'Accept': 'application/json',
      'Accept-Language': 'en,ru;q=0.9',
    }
  }).then(response => {
    return response.data;
  }).catch(error => {
      console.error(error);
      throw error;
    })
)

替换成这个,在服务器和客户端上都能正常工作

export const fetchProjects = (tags: string[] | number[] = [], page: number = 1 ) => async () => (
  new Promise((resolve, reject) => {
    fetch(
      `${apiURL()}${appConfig.PROJECTS_ENDPOINT}?${queryString({tags, page})}`, {
        headers: {
          'Accept': 'application/json',
          'Accept-Language': 'en,ru;q=0.9'
        }
      }
    ).then(response => {
      response.json().then(data => resolve(data));
    })
      .catch(error => {
        console.error(error);
        reject(error);
      })
  })
)
pdtvr36n

pdtvr36n1#

事实证明,这个问题在最新版本的axios中得到了修复。

相关问题