Netlify 上的 Next.js
Netlify 的 Next.js 适配器会自动配置 Netlify 站点的关键功能,包括缓存控制、按需重新验证和图像优化。
该适配器配置 Netlify 函数来处理站点的服务器端功能(如 SSR、ISR 和 PPR 页面、API 端点、Server Actions 等),以及用于边缘 Middleware 的 Netlify 边缘函数,确保功能开箱即用。
我们使用框架本身的全面端到端测试,自动验证与最新稳定版 Next.js 的兼容性。要获取最新的测试结果,请使用上方的徽章。
开始使用
最简单的开始方式是将我们的 Next.js 平台 starter 模板部署到您的 Netlify 账户。使用下面的按钮开始。
先决条件
- Next.js 13.5 及更高版本(直至最新稳定版)
- Node 18.x 或更高版本 (opens in a new tab)
- 最新版本的 Netlify CLI (opens in a new tab)
主要功能
-
App Router: Netlify 完全支持 Next.js App Router,它支持更强大的嵌套布局和 React 的最新功能,如 Server Components 和 Streaming。
-
自动细粒度缓存: 适配器在 Netlify 上使用细粒度缓存来支持 Next.js 全路由缓存和数据缓存。这意味着静态页面响应会自动缓存到边缘,并且可以按路径或按标签重新验证。
-
按需和基于时间的重新验证: App Router 和 Pages Router 都支持按需和基于时间的重新验证,允许您在部署后的任何时间重新验证和生成内容。
-
图像优化:
next/image组件默认使用 Netlify Image CDN (opens in a new tab) 以确保您的图像得到优化并以最高效的格式提供服务。
请注意,虽然我们通常也从早期阶段支持实验性功能(例如,Partial Prerendering),但这些功能在框架层面尚未被视为稳定功能。
自动框架检测
Netlify 会自动检测到您正在使用 Next.js,并为您的站点配置最新的适配器。
固定特定适配器版本
要将 Netlify Next.js 适配器固定到特定版本,请参阅 Netlify 文档 (opens in a new tab)。
建议的配置值
当您为 Next.js 项目 链接仓库 (opens in a new tab) 时,Netlify 会提供建议的构建命令和发布目录:next build 和 .next。
如果您使用 CLI 运行 Netlify Dev (opens in a new tab) 进行本地开发环境,Netlify 会建议一个开发命令和端口:next 和 3000。
您可以覆盖建议的值或在配置文件中设置它们,但自动框架检测的建议值可能有助于简化在 Netlify 上设置 Next.js 站点的过程。
对于手动配置,请查看 Next.js 的 典型构建设置 (opens in a new tab)。
限制
目前,Netlify 的 Next.js 适配器有以下限制:
-
设置为
edge运行时的 SSR 页面将在您的 函数区域 (opens in a new tab) 中运行。 如果边缘级性能至关重要,我们建议您改用带有边缘函数的静态页面。它们在源站渲染,然后缓存到边缘,并可按需重新验证。 -
Next.js 配置中的 Rewrites 不能指向
public目录中的静态文件。 如果在next.config.js中创建beforeFilesrewrites,它们不能指向站点public目录中的静态文件。您可以使用 middleware rewrites 作为替代方案。 -
Headers 和 Redirects 在 middleware 之后评估。 如果您需要维持 Next.js 文档 (opens in a new tab) 中指定的执行顺序,您将需要使用我们的平台原语在 Next.js 之外配置 headers (opens in a new tab) 和 redirects (opens in a new tab)。
-
Netlify Forms 兼容性: 使用当前适配器使用 Netlify Forms 需要变通方法。
pnpm 支持
如果您计划使用 pnpm 与 Next.js 一起管理依赖项,您必须执行以下操作之一:
-
设置一个值为
--shamefully-hoist的PNPM_FLAGS环境变量 (opens in a new tab)。这会将--shamefully-hoist参数附加到 Netlify 运行的pnpm install命令中。 -
通过在项目根目录添加一个包含以下内容的
.npmrc文件来 启用公共提升 (opens in a new tab):public-hoist-pattern[]=*
了解更多关于在 Netlify 上使用 pnpm (opens in a new tab) 的信息。
故障排除
OpenNext 文档专门关于使用 Netlify 的 Next.js 适配器 v5 及更高版本。对于旧版本的适配器,请参阅 Netlify 文档 (opens in a new tab)。
如果您需要任何版本适配器的帮助,请访问 我们的支持页面 (opens in a new tab) 以查找各种获取答案和帮助的方法。
更多资源
- 典型 Next.js 构建设置 (opens in a new tab)
- Next.js 框架文档 (opens in a new tab)
- Connect JavaScript 客户端 (opens in a new tab) - 推荐的库,用于在 Next.js 缓存的 SSR 站点中查询 Connect 数据层 API。