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

能否完全禁用Next.js SSR?使用NextPages部署至非SSR主机可行吗?

禁用Next.js SSR并部署到非SSR主机的完整方案

不管你用的是Pages Router(也就是你说的NextPages)还是App Router,都可以完全禁用SSR,生成纯静态站点部署到仅支持静态文件的主机上,下面分两种路由模式说明具体操作:

Pages Router 完全禁用SSR

  1. 配置静态导出
    在项目根目录的next.config.js中添加output: 'export'配置,这会让Next.js在构建时生成纯静态HTML/CSS/JS文件,完全剔除SSR相关逻辑:
    /** @type {import('next').NextConfig} */
    const nextConfig = {
      output: 'export',
      // 静态导出不支持Next.js内置图片优化,需要开启unoptimized
      images: {
        unoptimized: true,
      },
      // 如果有自定义路由,可根据主机需求配置trailingSlash,可选
      trailingSlash: true,
    }
    module.exports = nextConfig
    
  2. 避免使用SSR相关API
    所有页面不要使用getServerSideProps(这是触发SSR的核心API),如果需要数据获取,改用getStaticProps(静态预渲染);如果不需要数据,直接编写普通React组件即可,默认就是静态生成的。
  3. 构建并部署
    运行npm run build,项目根目录会生成out文件夹,里面就是完整的静态站点文件,直接将这个文件夹的内容上传到静态主机即可。

App Router 完全禁用SSR

App Router同样可以实现纯静态导出,操作和Pages Router类似:

  1. 配置静态导出
    修改next.config.js,添加相同的output: 'export'配置,图片优化的设置也保持一致。
  2. 确保组件静态渲染
    • 页面组件不要使用async/await进行数据获取(如果必须用,要确保数据是静态可预渲染的,比如结合generateStaticParams处理动态路由);
    • 不要使用依赖服务器环境的API(比如headers()、cookies()这类只能在SSR/SSG运行时调用的方法)。
  3. 构建部署
    运行npm run build生成out文件夹,直接上传到静态主机即可。

关于Pages Router vs App Router的疑问

你提到的用Pages Router(NextPages)完全禁用SSR是可行的,只要按照上面的配置操作,就能生成完全无SSR的静态站点。App Router也能做到同样的效果,并非只有Pages Router支持。两者的核心都是通过output: 'export'让Next.js跳过SSR构建流程,生成纯静态资源。

部署注意事项

  • 静态主机无需支持Node.js,只要能托管静态文件即可(比如GitHub Pages、Netlify静态部署、Cloudflare Pages等);
  • 如果使用了Next.js的客户端路由(Link组件),需要配置主机的SPA fallback规则:把所有404请求指向index.html。比如在Netlify中可以创建_redirects文件,内容为/* /index.html 200;在GitHub Pages中可以通过自定义404.html配合JS来处理路由 fallback。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:15:20