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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 14:22:47