SvelteKit构建后docs无index.html,添加prerender配置报错求助
解决SvelteKit构建GitHub Pages时index.html缺失及prerender配置报错问题
问题重现
我是SvelteKit新手,用npm run build构建项目准备部署到GitHub Pages,构建成功后发现docs文件夹里没有index.html。查资料尝试添加config.kit.prerender.default = true到svelte.config.js,结果构建报错:Error: Unexpected option config.kit.prerender.default。
初始配置代码:
import adapter from '@sveltejs/adapter-static'; /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { adapter: adapter({ pages: 'docs', assets: 'docs', strict: false }), paths: { base: process.env.NODE_ENV === 'development' ? '' : '/Cubesofcalm', } } }; export default config;
修改后报错的配置代码:
import adapter from '@sveltejs/adapter-static'; /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { adapter: adapter({ pages: 'docs', assets: 'docs', strict: false }), paths: { base: process.env.NODE_ENV === 'development' ? '' : '/Cubesofcalm', }, prerender: { default: true } } }; export default config;
错误原因
prerender.default是旧版SvelteKit的配置项,新版已移除该配置,因此会触发配置格式错误。
解决方案
方案1:全局配置预渲染所有路由
在svelte.config.js中,将prerender.default替换为entries: ['*'],强制SvelteKit预渲染所有路由:
import adapter from '@sveltejs/adapter-static'; /** @type {import('@sveltejs/kit').Config} */ const config = { kit: { adapter: adapter({ pages: 'docs', assets: 'docs', strict: false }), paths: { base: process.env.NODE_ENV === 'development' ? '' : '/Cubesofcalm', }, prerender: { entries: ['*'] // 预渲染所有路由条目 } } }; export default config;
方案2:在路由组件中单独设置预渲染
在需要生成静态页面的路由组件(比如根路由src/routes/+page.svelte)中添加export const prerender = true,标记该路由需要预渲染:
<script> // 标记当前路由需预渲染 export const prerender = true; </script> <!-- 页面内容 -->
验证修改
重新执行npm run build,构建完成后检查docs文件夹,index.html会正常生成,此时即可部署到GitHub Pages。
内容的提问来源于stack exchange,提问作者irakli dzaganishvili
相关产品推荐
相关产品推荐

