SvelteKit/Tauri含[calculator_id]slug路由预渲染报错求助
解决SvelteKit动态路由预渲染报错的方案
你的问题核心是:带[calculator_id]的动态路由依赖运行时嵌入式数据库的ID,构建阶段无法提前获取这些ID,导致预渲染爬虫找不到具体的路由URL,从而抛出错误。以下是直接可行的解决方法:
方法一:给动态路由页面禁用预渲染
既然这个页面的内容只能在运行时获取,完全没必要预渲染。在对应的路由页面文件中设置prerender: false即可:
// src/routes/edit/calculator/[calculator_id]/+page.js export const prerender = false;
这样构建时,SvelteKit就不会把这个路由纳入预渲染范围,自然不会报错。
方法二:调整全局预渲染策略(适合多动态路由场景)
如果你的项目里大部分页面都是动态的,只有少数静态页面需要预渲染,可以全局默认禁用预渲染,再给需要的页面单独开启:
- 在
svelte.config.js里设置全局预渲染默认值:
export default { kit: { prerender: { default: false } } };
- 给静态页面(比如首页)单独开启预渲染:
// src/routes/+page.js export const prerender = true;
补充:如果后续有已知固定ID的情况
如果之后你有一批已知的calculator_id需要预渲染,可以在svelte.config.js里指定预渲染条目:
export default { kit: { prerender: { entries: [ '/', '/edit/calculator/1001', '/edit/calculator/1002' // 把已知的ID对应的路由加进来 ] } } };
但这个方法对你当前的情况不适用,因为你现在的ID在构建前完全未知。
内容的提问来源于stack exchange,提问作者Ólavur Nón
相关产品推荐
相关产品推荐

