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

Next.js生产环境服务端组件Fetch失效问题及解决方案

Next.js App Router动态路由Vercel部署后404问题解决

问题场景

开发环境下,/blog-posts页面可正常获取所有博客文章,/blog-posts/[slug]动态路由也能正确获取单篇文章。但部署到Vercel后,列表页仍可正常加载数据,访问动态路由时却显示404页面,控制台提示"Failed to load resource",且Vercel项目日志中无相关报错记录。

代码实现(遵循Next.js文档规范)

数据获取函数

async function getData() {
  const res = await fetch("https://*backendurl*/api/getBlogPosts");

  if (!res.ok) {
    // 触发最近的error.js错误边界
    throw new Error("Failed to fetch data");
  }

  return res.json();
}

页面调用方式

const data = await getData();

部署相关日志

添加{ cache: 'no-store' }选项后的Vercel构建日志:

Route (app)                                Size     First Load JS
┌ ○ /                                      0 B                0 B
├ λ /blog-yazilari                         315 B          84.1 kB
├ λ /blog-yazilari/[slug]                  536 B          84.3 kB
├ ○ /favicon.ico                           0 B                0 B
└ ○ /magaza                                135 B          77.8 kB
+ First Load JS shared by all              77.7 kB
  ├ chunks/769-f274f40a4e22dc69.js         25.2 kB
  ├ chunks/bce60fc1-5c8e6a0bf302e824.js    50.5 kB
  ├ chunks/main-app-6118df2562cf8b41.js    216 B
  └ chunks/webpack-753df88ab1dee99a.js     1.75 kB
Route (pages)                              Size     First Load JS
─ ○ /404                                   182 B          75.5 kB
+ First Load JS shared by all              75.4 kB
  ├ chunks/framework-8883d1e9be70c3da.js   45 kB
  ├ chunks/main-c4daa89c94afb7ed.js        28.4 kB
  ├ chunks/pages/_app-998b8fceeadee23e.js  195 B
  └ chunks/webpack-753df88ab1dee99a.js     1.75 kB
λ  (Server)  server-side renders at runtime (uses getInitialProps or getServerSideProps)
○  (Static)  automatically rendered as static HTML (uses no initial props)

ISR函数中无博客页面相关记录:

favicon.ico
Node.js 18.x
7,5 MB
IAD1


index
Node.js 18.x
7,5 MB
IAD1


index.rsc
Node.js 18.x
7,5 MB
IAD1


magaza
Node.js 18.x
7,5 MB
IAD1


magaza.rsc

问题原因及解决方法

项目初期配置了国际化(i18n),删除next.config.js中的以下配置后问题解决:

//next.config.js
const nextConfig = {
 i18n: {
    locales: ["en-US", "tr-TR", "ru-RU"],
    defaultLocale: "tr-TR",
  },
...
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:29:51