Next.js执行npm run build时,/blog/[id]页面数据收集失败的原因?
问题分析:Next.js构建时
Failed to collect page data from /blog/[id]错误原因 以下是你的代码:
const Details = ({ userData }) => { return ( <Layout> <h1>{userData?.header}</h1> </Layout> ) } export default Details export const getStaticPaths = async () =>{ const res = await fetch(`http://localhost:3000/api/blogs`); const blogs = await res.json(); const ids = blogs.map((blog) => blog.id); const paths = ids.map((id)=>({params:{id: id.toString()}})); return{ paths, fallback:false, }; }; export const getStaticProps = async (context) =>{ const res = await fetch(`http://localhost:3000/api/blogs/${context.params.id}`); const userData = await res.json(); return{ props:{ data, userData, } } }
执行npm run build时出现错误:
Error: Failed to collect page data from /blog/[id]
错误原因主要有三点:
- 未定义变量触发运行时错误:
getStaticProps返回的props里包含了data,但这个变量从未被声明或赋值,会直接抛出ReferenceError,中断页面数据收集流程。 - 构建阶段无法访问本地API服务:执行
npm run build时,本地开发服务器(localhost:3000)并未启动,fetch请求会失败,导致getStaticPaths无法获取博客ID生成路由路径,getStaticProps也无法获取单篇博客数据。 - fallback设置放大了问题:
getStaticPaths中fallback: false要求所有路由必须在构建时生成,一旦API请求失败无法生成有效paths,就会直接触发页面数据收集失败的错误。
内容的提问来源于stack exchange,提问作者Frontmir
相关产品推荐
相关产品推荐

