【发布时间】:2022-10-24 19:02:44
【问题描述】:
嘿,伙计们,我有一个问题,我使用 react 和 typscript 和 sanity cms 进行了构建,但问题是当我尝试将构建部署到 varcel 时,它一直拒绝它说 FetchError: invalid json response body at https://portfolio2-1-wn3v.vercel.app/api/getExperience reason: Unexpected JSON中的令牌T在位置0,而它在我的本地机器上工作时它会找到所有数据和所有内容......我读到它可能是getStaticProps或获取json时的问题,是的,我确实改变了环境变量从 http 3000 中的 base_url 到 varcel 的,但除此之外我不知道我还能做什么....如果有人遇到过这种错误?这是我的代码
`import {Experience} from '../typings'
export const fetchExperiences = async () =>{
const res = await fetch(`${process.env.NEXT_PUBLIC_BASE_URL}/api/getExperience`)
const data = await res.json()
const projects:Experience[] = data.experience
return experience
}`
getExercise.ts 文件包含所有 api 请求
import type{NextApiRequest,NextApiResponse} from 'next'
import {groq} from 'next-sanity';
import {sanityClient} from '../../sanity';
import {Experience} from '../../typings'
const query = groq`
*[_type == "experience"]{
...,
technologies[]->
}
`;
type Data ={
experience:Experience[]
}
export default async function handler(
req:NextApiRequest,
res:NextApiResponse<Data>,
){
const experience:Experience[]= await sanityClient.fetch(query)
res.status(200).json(JSON.parse(JSON.stringify({experience})))
}
这是 index.ts 文件的一部分
export const getStaticProps: GetStaticProps<Props> = async() => {
const experience : Experience[] = await fetchExperiences();
const skills : Skill[] = await fetchSkills();
const projects : Project[] = await fetchProjects();
const socials : Social[] = await fetchSocials();
return{
props:{
experience,
skills,
projects,
socials,
},
revalidate:10
}
}
【问题讨论】: