问题
我有一个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);
})
})
)
1条答案
按热度按时间pdtvr36n1#
事实证明,这个问题在最新版本的axios中得到了修复。