Next.js 14调用Vercel KV读取数据返回null及部署异常问题
Next.js 14 + Vercel KV 读取数据异常问题
背景:数据已成功存入Vercel KV
我通过以下代码将数据存入Vercel KV(Redis)数据库:
import { kv } from "@vercel/kv"; ... await kv.set("cabins", data)
通过Vercel官网CLI执行get cabins命令,或本地脚本运行await kv.get("cabins"),均可确认数据已正确导入。
问题1:API路由读取KV数据返回null
我在Next.js 14应用的API路由src/app/api/getCabins/route.ts中尝试读取该数据:
// src/app/api/getCabins/route.ts import { kv } from "@vercel/kv"; ... async function getCabinsFromKV(): Promise<CabinFromKV[]> { const cabins = await kv.get("cabins"); console.log(cabins); console.log("PRINTING FROM GETCABINSFROMKV"); return cabins } ... export async function GET() { try { const cabins = await getCabinsFromKV(); ... } catch {...}
但上述代码中的console.log(cabins)始终输出null,无论是本地运行项目还是执行npm run build时均是如此。
问题2:客户端组件调用API导致页面报错
我在客户端组件中通过useEffect调用该API:
// src/components/heatmap/Heatmap.tsx "use client" const Heatmap: React.FC = () => { const [cabins, setCabins] = useState<CabinDetails[]>([]); ... useEffect(() => { const fetchData = async () => { const response = await fetch("/api/getCabins", { method: "GET", headers: { "Content-Type": "application/json" }, }); const { cabins } = await response.json(); setCabins(cabins); }; fetchData(); }, []); ... }
对应的页面代码:
// src/app/heatmap/page.tsx import Heatmap from "@/components/heatmap/Heatmap"; const Page = async ({}) => { return ( <div> <Heatmap /> </div> ); }; export default Page;
Vercel部署后其他页面正常,但该页面出现错误:Application error: a client-side exception has occurred (see the browser console for more information).
已尝试的无效方案
- 在
page.tsx中直接调用fetch("/api/getCabins"),出现无效URL错误; - 在
page.tsx中用'use server'装饰器定义getCabins()函数并传递给Heatmap.tsx,未解决问题。
内容的提问来源于stack exchange,提问作者armara
相关产品推荐
相关产品推荐

