SvelteKit使用Static Adapter调用API预渲染失败求解决方案
SvelteKit静态站点调用API路由的正确做法?
当不尝试从API加载任何动态数据时,可以正常构建静态站点。但使用以下代码时出现问题:
//export const prerender = true; export const load = async ({ fetch }) => { const res = await fetch(`/api/WeatherForecast/`); if(res.ok){ const weatherForecasts = await res.json(); return { weatherForecasts }; } const { message } = await res.json(); return { error: new Error(message) }; }
此时遇到错误,提示代码必须预渲染。于是取消注释开启预渲染:
export const prerender = true; export const load = async ({ fetch }) => { const res = await fetch(`/api/WeatherForecast/`); if(res.ok){ const weatherForecasts = await res.json(); return { weatherForecasts }; } const { message } = await res.json(); return { error: new Error(message) }; }
开启预渲染后,页面出现JSON解析错误和500服务端错误。
我发现将Static适配器设置为非严格模式:
adapter: adapter({assets: 'build', pages: 'build', precompress: false, strict: false})
可以忽略HTTP错误完成构建,且站点运行时能正常调用API,但这种方式感觉不太妥当。
请问使用SvelteKit构建静态站点并让部分页面调用API路由获取数据的正确做法是什么?
内容的提问来源于stack exchange,提问作者Kiksen
相关产品推荐
相关产品推荐

