You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS+Sanity配置报错:已配置projectId环境变量仍提示需包含该字段

解决Sanity配置缺少projectId的运行时错误

可能的原因及修复步骤:

  • 环境变量命名不符合NextJS规则
    NextJS中,客户端可访问的环境变量必须以NEXT_PUBLIC_为前缀。你代码里用的process.env.NEXT_APP_PROJECT_ID不符合要求,需做以下修改:

    1. 将根目录环境文件(如.env.local)里的变量名改为NEXT_PUBLIC_PROJECT_ID
    2. 代码同步更新:
      export const client = sanityClient({
        projectId: process.env.NEXT_PUBLIC_PROJECT_ID,
        dataset: 'production',
        apiVersion: '2022-03-10',
        useCdn: true,
        token: process.env.NEXT_APP_SANITY_TOKEN // 注意:token不要在客户端暴露,若仅服务器端使用可保留原命名
      });
      
  • 环境文件未被正确加载

    • 确保环境文件放在项目根目录,文件名正确:开发环境用.env.local,生产环境用.env.production
    • 修改环境变量后必须重启NextJS开发服务器(停止npm run dev后重新启动),否则新变量不会生效
    • 可临时在代码中添加console.log(process.env.NEXT_PUBLIC_PROJECT_ID),若输出undefined,说明环境变量未被加载
  • 区分客户端与服务器端使用场景
    如果Sanity Client仅在服务器端代码(如getServerSideProps、API路由)中使用,无需加NEXT_PUBLIC_前缀,但要确保:

    • 本地.env文件存在对应变量,且未被错误加入.gitignore
    • 部署时已在平台配置好对应环境变量
  • 版本兼容性问题
    确认@sanity/client版本和教程一致,若版本差异过大,可安装教程指定版本:

    npm install @sanity/client@<教程指定版本号>
    

重要提醒:Sanity的token包含操作权限,绝对不要在客户端代码中暴露,敏感操作请放在服务器端完成。

内容的提问来源于stack exchange,提问作者Iram

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 23:20:30