Sanity环境变量配置失败求助:process.env无法识别问题
如何在Sanity Studio中正确配置环境变量
核心配置步骤
- 严格遵循变量命名规则
所有自定义环境变量必须以SANITY_STUDIO_作为前缀,这是Sanity Studio自动识别加载的硬性要求。比如你需要的Bearer token,应该在.env文件里写:
SANITY_STUDIO_AUTH_TOKEN=your-actual-bearer-token-here
放置正确的文件位置
将.env或.env.local文件放在Sanity Studio的根目录(就是包含sanity.config.js/sanity.config.ts、sanity.cli.js的那个文件夹),不能放在子目录里。重启Studio服务
修改.env文件后,必须完全停止当前运行的sanity dev服务,再重新启动,否则新的环境变量不会被加载。代码中正确引用
确保代码里的变量名和.env里的完全一致,并且使用反引号包裹模板字符串:
// 在sanity.config.js中 export default defineConfig({ // ...其他配置项 api: { projectId: 'your-project-id', dataset: 'your-dataset', authorization: `Bearer ${process.env.SANITY_STUDIO_AUTH_TOKEN}` } })
常见问题排查
- 不要给变量加引号:.env文件里的变量值不需要用单/双引号包裹,直接写
KEY=value即可,加引号会导致变量值包含引号本身。 - Sanity v2需要手动引入dotenv:如果你用的是Sanity v2版本,需要先安装
dotenv包:
然后在npm install dotenv --save-devsanity.config.js顶部添加:
v3及以上版本不需要这一步,Sanity会自动处理带require('dotenv').config()SANITY_STUDIO_前缀的变量。 - 检查拼写错误:确认变量名的大小写、前缀完全匹配,比如不要把
SANITY_STUDIO_写成SANITYSTUDIO_或者漏掉下划线。 - SANITY_ACTIVE_ENV的正确用法:如果要按环境区分配置(比如开发/生产),需要先在package.json的启动脚本里指定环境:
然后创建对应的环境文件,比如"scripts": { "dev": "SANITY_ACTIVE_ENV=development sanity dev", "build": "SANITY_ACTIVE_ENV=production sanity build" }.env.development、.env.production,文件里的变量同样需要SANITY_STUDIO_前缀。
验证配置是否生效
可以在sanity.config.js里添加一行日志输出,重启服务后查看终端:
console.log('Loaded auth token:', process.env.SANITY_STUDIO_AUTH_TOKEN)
如果能正常打印出你的token值,说明配置已经生效,否则回到前面的步骤逐一排查。
内容的提问来源于stack exchange,提问作者Kris
相关产品推荐
相关产品推荐

