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

document.js中getInitialProps函数运行在服务端、客户端还是双端?

关于Next.js自定义_document中getInitialProps的执行环境

结论

你贴出的MyDocument类里的静态方法getInitialProps,仅会在服务端运行,不会在客户端执行。

验证和原理说明

_document.js是Next.js提供的、用来自定义整个HTML文档根结构的特殊文件,它的所有逻辑只会在服务端生成HTML响应的阶段执行,相关代码根本不会被打包到发送给浏览器的客户端JS bundle里。
你在方法里写的console.log("document.js")是最好的验证方式:这行日志永远只会出现在你启动Next.js服务的终端输出里,打开浏览器的开发者工具控制台,永远看不到这行打印。

不同场景的触发规则

  • 用户首次打开站点页面的服务端渲染阶段:服务端会执行这个方法,拿到初始props后拼接完整的HTML内容返回给浏览器
  • 用户在站点内通过next/link、router.push做客户端路由跳转时:完全不会触发这个方法,因为客户端路由切换只需要拉取目标页面的片段内容,不需要重新生成整个HTML文档骨架

别和普通页面文件里的getInitialProps搞混:页面级的getInitialProps确实是首屏跑在服务端、客户端路由跳转时跑在客户端,但_document属于全局文档级的特殊文件,它的getInitialProps没有双端执行的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:48:16