SvelteKit(v2)部署Vercel后动态路由触发[ERR_INVALID_MODULE_SPECIFIER]错误
检查服务器端路径拼接逻辑
错误中的%5C是编码后的反斜杠,大概率是处理本地化路由时手动拼接模块路径导致的。比如在+page.server.js或+layout.server.js里加载组件/文档时,不要直接用字符串拼接(如${lang}/about),改用Node.js的path.join()处理路径,它会自动适配系统分隔符,避免出现编码问题。示例:import path from 'path'; const componentPath = path.join(lang, 'about');解码Prismic返回的路径字段
从Prismic获取的本地化文档路径可能带有编码字符,在使用前用decodeURIComponent()解码,确保模块导入的路径是原始未编码格式。比如处理文档的URL字段时:const decodedPath = decodeURIComponent(prismicDoc.data.url);验证SvelteKit本地化配置
检查svelte.config.js或src/hooks.server.js里的本地化路由设置,确保locales配置正确,路由参数生成时没有引入错误的分隔符。比如确认i18n的prefixDefaultLocale等选项是否符合预期,避免生成带异常编码的路由。清理Vercel远程缓存
仅删除本地.vercel目录不够,需要在Vercel控制台的项目「Build & Development Settings」里手动点击「Clear Build Cache」,再重新部署。远程缓存可能保留了旧的错误构建文件,导致问题持续存在。锁定兼容的依赖版本
不要仅用npm update,直接指定SvelteKit v2和Prismic插件的兼容版本。比如查看@prismicio/sveltekit的官方文档,确认适配SvelteKit v2的最新版本,在package.json里锁定:"@prismicio/sveltekit": "^0.2.0"(版本号以官方最新兼容版为准)
内容的提问来源于stack exchange,提问作者Moon Rat

