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

Next.js中Fetch API调用失败报错,请求排查问题原因

问题排查与修复方案

1. URL语法错误(核心问题)

你的API URL里多了一个多余的$符号:

const apiUrl = `https://api.themovie.org/3/movie/top_rated$?api_key=${API_KEY}&language=en-US&page=1`;

应该改为:

const apiUrl = `https://api.themovie.org/3/movie/top_rated?api_key=${API_KEY}&language=en-US&page=1`;

这个$会导致请求路径无效,Postman里的URL没有该符号所以能正常请求,这是代码报错的主要原因。

2. Try/Catch块范围错误

当前fetch调用在try块外部,网络类错误无法被捕获。需要把fetch也包裹到try内部:

try {
  const res = await fetch(apiUrl);
  console.log(res)
  if (!res.ok) {
    throw new Error(`Failed to fetch data: ${res.status} ${res.statusText}`);
  }
  const data = await res.json();
  const results = data.results;
  console.log(results);
} catch (error) {
  console.error('Error fetching data:', error.message);
}

3. 错误处理的无效属性

fetch抛出的Error对象并没有response属性,你在catch里访问error.response会得到undefined。如果需要响应状态信息,应该在抛出错误时把响应的状态码和状态文本包含进去,如上一步代码所示。

4. 环境变量验证

确保API密钥在Next.js中正确配置:

  • 若当前是服务器组件(Home是async组件,属于服务器组件),只需在项目根目录的.env.local文件中添加API_KEY=你的密钥,无需前缀。
  • 若后续改为客户端组件,需要给变量加上NEXT_PUBLIC_前缀,即NEXT_PUBLIC_API_KEY=你的密钥,否则客户端无法读取该变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:28:18