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

Next.js中间件fetch请求报错:调用localhost:3333出现TypeError

Next.js中间件调用localhost接口出现[TypeError: fetch failed]的解决办法

问题描述

在Next.js应用的中间件中发起fetch请求时,调用localhost:3333接口抛出错误:[TypeError: fetch failed] { cause: [Error: AggregateError] },但调用外部公共接口(如http://api.tvmaze.com/search/shows?q=postman)可正常工作。

该请求用于验证用户访问授权路由的身份状态:通过localhost:3333/auth/user接口返回结果判断用户是否登录,已授权则允许访问,否则重定向至登录页。

环境信息:

  • 前端运行地址:localhost:3000
  • 后端运行地址:localhost:3333

问题代码

// 无法正常工作
const responseA = await fetch(`${process.env.NEXT_PUBLIC_API_HOST!}/auth/user`)
  .then(res => res.json())
  .catch(error => console.log(error))

console.log(responseA)

// 可以正常工作
const responseB = await fetch("http://api.tvmaze.com/search/shows?q=postman")
  .then(res => res.json())
  .catch(error => console.log(error))

console.log(responseB)

解决方法

问题已解决:
实际原因是使用Docker部署时,发起请求的前端容器内部并没有在3333端口运行Web服务。将请求地址中的localhost替换为后端Web服务所在容器的名称后,请求即可正确路由,问题解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 15:22:04