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

Next.js 13项目运行正常但构建报错,请求排查原因

Next.js 13 构建时fetch失败及预渲染错误的原因分析

问题现象

  • 项目开发阶段可正常运行,但执行构建命令时出现报错
  • 核心报错信息:

    Generating static pages (2/4)TypeError: fetch failed
    at Object.fetch (node:internal/deps/undici/undici:11118:11)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async getData (D:\dev-js\smweb-next.next\server\chunks\512.js:431:17)

  • 预渲染错误提示:
    • Error occurred prerendering page "/". TypeError: fetch failed
    • Error occurred prerendering page "/auth/signin"
  • 最终构建失败提示:

    Build error occurred
    Error: Export encountered errors on following paths:
    /auth/signin/page: /auth/signin

相关代码与配置

数据获取代码

async function getData() {
    const res = await fetch('http://localhost:3000/api/product',{cache:"no-store"}); //{ next: { revalidate: 10 } }
    if (!res.ok) {
      throw new Error('Failed to fetch data');
    }

    return res.json();
  }

export const dataPromise = getData()

项目目录结构

-app 
---auth 
-----signin 
-------page.tsx 
-pages 
---api 
-----auth 
-------[...nextauth].ts

NextAuth配置([...nextauth].ts)

pages: {
    // custom page
    signIn: "/auth/signin",
  },

原因解析

  1. 构建阶段本地服务未启动:开发时本地服务器运行在3000端口,fetch能正常访问API,但构建是离线执行的,此时没有运行本地服务器,http://localhost:3000/api/product这个地址无法访问,直接导致请求失败。

  2. 错误的本地API调用方式:在Next.js的Server Components中获取数据,应该直接调用后端业务逻辑(比如数据库查询函数),而不是通过HTTP请求访问本地API路由。构建阶段API路由还未被部署启动,HTTP请求根本无法到达。

  3. 模块加载时的即时执行:export const dataPromise = getData()会在模块加载时立刻执行,而构建预渲染页面的过程中会触发这段代码,此时本地API不可用,自然抛出fetch失败的错误。

  4. SignIn页面的连锁依赖:/auth/signin页面可能间接依赖了getData()的逻辑,或者NextAuth在预渲染该页面时尝试访问相关资源,同样因为本地服务未运行,引发了相同的fetch失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:41:18