Next.js getStaticProps未正确渲染静态HTML问题求助
问题1:getStaticProps执行成功但未预渲染内容到HTML的解决方案
你给出的页面组件本身逻辑没有问题,且从__NEXT_DATA__的返回结果看,getStaticProps已经成功拉取到了users数据,问题100%出在整合Redux后修改的_app.js全局配置层,可按以下顺序排查:
- 检查
_app.js是否添加了客户端渲染判断,比如用typeof window !== 'undefined'作为条件渲染包裹了根组件。预渲染阶段(构建/服务端阶段)不存在window对象,该判断会导致预渲染时返回空内容,最终#__next节点为空。 - 如果你使用了
next-redux-wrapper库处理Redux和Next.js的集成,确认版本配置是否正确:v7以上版本需要为SSG场景单独配置wrapper.getStaticProps适配逻辑,如果只配置了服务端渲染(getServerSideProps)的适配规则,SSG的预渲染就会失效。 - 如果你升级到了Next.js 13+且混用了App Router特性,检查
_app.js是否被添加了'use client'指令,标记为全客户端组件后,静态预渲染阶段不会生成任何HTML内容,只会在客户端注水完成后渲染页面。 - 可查看
next build的输出日志,确认该页面的渲染类型标识:●代表纯静态、○代表ISR(增量静态再生,符合你revalidate:60的配置)、λ代表服务端渲染。如果显示为λ,说明你的Redux配置覆盖了页面原有的getStaticProps逻辑,强制走了服务端渲染。
问题2:构建生成的HTML头部大量script标签的说明
这些script是Next.js自动注入的必需资源,所有script都加了defer属性,不会阻塞页面解析,各自作用如下:
polyfills-*.js:低版本浏览器API兼容包,带nomodule属性,只会在不支持ES模块的旧浏览器加载webpack-*.js:webpack模块加载运行时代码framework-*.js:React、Next.js核心框架代码main-*.js:Next.js通用运行逻辑pages/_app-*.js:你自定义的全局_app组件的打包产物pages/GSSP-*.js:当前访问页面的专属打包代码_buildManifest.js/_ssgManifest.js:Next.js用于资源预加载、增量静态更新的配置文件
这些script是Next.js实现客户端注水、页面交互、增量静态再生等功能的基础,不需要手动删除。
内容的提问来源于stack exchange,提问作者Escaga Seen
相关产品推荐
相关产品推荐

