Vercel部署Sanity客户端报错:已删studioUrl仍提示使用预览库选项
问题描述
Vercel构建时抛出以下错误:
Error: It looks like you're using options meant for '@sanity/preview-kit/client', such as 'encodeSourceMapAtPath', 'encodeSourceMap', 'studioUrl' and 'logger'. Make sure you're using the right import.
已删除Sanity客户端配置中的studioUrl参数并推送到GitHub,但Vercel仍报错,本地构建无任何问题。当前Sanity客户端配置代码如下:
import { createClient } from "next-sanity"; import imageUrlBuilder from '@sanity/image-url'; export const client = createClient({ projectId: process.env.NEXT_PUBLIC_SANITY_PROJECT_ID, dataset: "production", apiVersion: "2022-03-25", token: process.env.NEXT_PUBLIC_SANITY_API_TOKEN, useCdn: true, }); const builder = imageUrlBuilder(client); export const urlFor = (source) => builder.image(source);
解决方案
清除Vercel构建缓存
Vercel可能缓存了旧的构建文件,即便代码已更新。进入Vercel项目的Settings > Git,找到Build & Development Settings,点击Clear Cache后重新触发构建。排查项目中其他Sanity配置文件
项目里可能还有其他文件(比如预览组件、API路由)使用了@sanity/preview-kit/client的导入,或者残留了studioUrl这类参数。全局搜索项目中的studioUrl、encodeSourceMap等关键词,确保所有相关配置都已清理,且统一使用next-sanity的createClient。对齐本地与Vercel的依赖版本
本地和Vercel安装的依赖版本可能不一致,导致构建行为差异。删除本地的node_modules和锁文件(package-lock.json或yarn.lock),重新安装依赖后推送锁文件到GitHub,让Vercel使用相同版本的依赖构建。查看Vercel完整构建日志定位报错文件
打开Vercel构建日志的完整输出,找到报错对应的具体文件路径,精准定位问题所在的代码文件并修改。
内容的提问来源于stack exchange,提问作者André Gomes

