使用SvelteKit构建项目时pnpm build执行失败报错
问题描述
用pnpm create svelte搭建SvelteKit项目,执行pnpm build时出现如下报错:
vite v3.0.9 building for production... ✓ 77 modules transformed. .svelte-kit/output/client/vite-manifest.json 2.96 KiB [vite-plugin-svelte-kit] Error running plugin hook writeBundle for vite-plugin-svelte-kit, expected a function hook. error during build: Error: Error running plugin hook closeBundle for vite-plugin-svelte-kit, expected a function hook. at error (file:///home/leo/code/keo-website/node_modules/.pnpm/rollup@2.77.3/node_modules/rollup/dist/es/shared/rollup.js:1858:30) at throwInvalidHookError (file:///home/leo/code/keo-website/node_modules/.pnpm/rollup@2.77.3/node_modules/rollup/dist/es/shared/rollup.js:22551:12) at file:///home/leo/code/keo-website/node_modules/.pnpm/rollup@2.77.3/node_modules/rollup/dist/es/shared/rollup.js:22692:24 at async Promise.all (index 0) at async Object.close (file:///home/leo/code/keo-website/node_modules/.pnpm/rollup@2.77.3/node_modules/rollup/dist/es/shared/rollup.js:23662:13) at async Promise.all (index 0) at async build (file:///home/leo/code/keo-website/node_modules/.pnpm/vite@3.0.9_sass@1.54.7/node_modules/vite/dist/node/chunks/dep-0fc8e132.js:43473:13) at async CAC.<anonymous> (file:///home/leo/code/keo-website/node_modules/.pnpm/vite@3.0.9_sass@1.54.7/node_modules/vite/dist/node/cli.js:747:9) ELIFECYCLE Command failed with exit code 1.
项目的svelte.config.js配置:
import adapter from "@sveltejs/adapter-static"; import preprocess from "svelte-preprocess"; /** @type {import('@sveltejs/kit').Config} */ const config = { preprocess: preprocess({ scss: { includePaths: ["./src/styles"] }, }), kit: { adapter: adapter({ pages: "build", assets: "build", }), }, }; export default config;
本次操作与以往唯一区别:因SvelteKit路由系统改版,在src/routes/+layout.svelte中添加了export const prerender = true;。
解决方案
这个错误核心是依赖版本不兼容或缓存异常导致的插件钩子执行失败,结合你的改动,按以下步骤排查:
清理依赖缓存并重装
执行以下命令清理pnpm缓存并重新安装依赖:pnpm store prune pnpm install调整Prerender配置位置
新版SvelteKit中,全局预渲染配置更推荐放在src/routes/+layout.js(而非.svelte文件)中,创建或修改该文件:export const prerender = true;然后删除
+layout.svelte中的对应导出语句。删除构建缓存目录后重新构建
清理旧的构建产物和SvelteKit缓存,再执行构建:rm -rf .svelte-kit build pnpm build检查并更新依赖版本
确保@sveltejs/kit、@sveltejs/adapter-static和vite版本相互兼容。可以将相关依赖更新到最新稳定版:pnpm update @sveltejs/kit @sveltejs/adapter-static vite
内容的提问来源于stack exchange,提问作者ByteAtATime
相关产品推荐
相关产品推荐

