Next.js项目构建遇预渲染错误,开发环境正常无法生成页面
解决Next.js构建预渲染错误:TypeError: href.startsWith is not a function
错误根源
该错误是因为项目中<Head>组件内的标签(如<link>、<a>)的href属性不是字符串类型(可能是undefined、null或对象)。开发环境下Next.js预渲染检查较宽松,但生产构建时会严格校验,最终导致所有页面预渲染失败。
排查步骤
- 全局搜索项目中所有使用
<Head>组件的文件(包括_app.js、_layout.js等全局布局文件,以及各页面的Head配置)。 - 重点检查
<link>、<a>标签的href属性:- 确认属性值是有效字符串,而非未定义的变量、null或非字符串类型。
- 优先排查404页面的Head配置(报错最先触发于
/404页面),再检查全局布局中的Head内容(所有页面会继承全局Head,此处错误会影响所有页面)。
修复示例
- 错误写法(若环境变量未配置,
href会变为undefined):
<Head> <link href={process.env.NEXT_PUBLIC_CUSTOM_CSS} rel="stylesheet" /> </Head>
- 修复写法(确保
href始终为有效字符串):
<Head> <link href={process.env.NEXT_PUBLIC_CUSTOM_CSS || '/styles/default.css'} rel="stylesheet" /> </Head>
- 动态数据场景:如果
href依赖动态数据,需在getStaticProps或getServerSideProps中提前获取并确保数据存在,避免预渲染时href为空或非字符串。
验证方法
修复后执行next build测试,若仍报错,可逐步注释<Head>内的标签,定位具体触发错误的元素,针对性修复。
内容的提问来源于stack exchange,提问作者nasimstg
相关产品推荐
相关产品推荐

