Next.js15集成Sanity Studio部署及访问问题求助
Next.js 15 + Sanity v3 嵌入Studio问题
我用Next.js 15 + TypeScript开发作品集网站,Sanity CMS v3采用JavaScript初始化,遇到以下问题:
- 部署Sanity Studio时触发
Error: Configuration must contain projectId错误 - 将Studio嵌入Next.js项目后,访问
http://localhost:3000/studio显示Tool not found: studio,虽能临时打开structure、vision工具,但很快跳转404页面 - 已确认CORS配置正常,移除了.gitignore中的.env.local,部署时能看到projectId的日志输出
- 尝试改用.env文件替代.env.local后,又出现
TypeError: Cannot read properties of undefined (reading 'toLowerCase')错误
相关配置代码如下:
sanity.config.js
"use client"; import { visionTool } from "@sanity/vision"; import { defineConfig } from "sanity"; import { structureTool } from "sanity/structure"; import { apiVersion, dataset, projectId } from "./sanity/env"; import { schema } from "./sanity/schemaTypes"; import { structure } from "./sanity/structure"; console.log("projectId", projectId); export default defineConfig({ basePath: "/", projectId, dataset, schema, plugins: [ structureTool({ structure }), visionTool({ defaultApiVersion: apiVersion }), ], });
sanity.cli.js
import { defineCliConfig } from "sanity/cli"; const projectId = process.env.NEXT_PUBLIC_SANITY_PROJECT_ID; const dataset = process.env.NEXT_PUBLIC_SANITY_DATASET; const studioHost = "xxxxxx"; export default defineCliConfig({ api: { projectId, dataset }, studioHost: studioHost, });
env.js
export const apiVersion = process.env.NEXT_PUBLIC_SANITY_API_VERSION || "2024-11-30"; export const dataset = process.env.NEXT_PUBLIC_SANITY_DATASET; export const projectId = process.env.NEXT_PUBLIC_SANITY_PROJECT_ID;
.env.example & .env.local
NEXT_PUBLIC_SANITY_PROJECT_ID=xxxxxxx NEXT_PUBLIC_SANITY_DATASET=production NEXT_PUBLIC_BASE_URL=http://localhost:3000/
改用的.env
NEXT_PUBLIC_SANITY_PROJECT_ID = "xxxxxxxx" NEXT_PUBLIC_SANITY_DATASET = "production" NEXT_PUBLIC_BASE_URL = "http://localhost:3000/"
内容的提问来源于stack exchange,提问作者Aidan Mc Intosh
相关产品推荐
相关产品推荐

