Cloudflare
历史版本
0.3 版本
概览

Cloudflare

@opennextjs/cloudflare (opens in a new tab) 适配器允许你使用 Next.js 的 Node.js "运行时" (opens in a new tab) 将 Next.js 应用部署到 Cloudflare Workers (opens in a new tab)

💡

@opennextjs/cloudflare (opens in a new tab) 尚未达到 1.0 版本,仍处于积极开发中。你应该尝试它,报告错误 (opens in a new tab)分享反馈 (opens in a new tab),并贡献代码以帮助简化在 Cloudflare 上运行 Next.js 应用。我们目前还不完全建议将其用于关键任务的生产应用。

你也可以使用 @cloudflare/next-on-pages (opens in a new tab) 将 Next.js 应用部署到 Cloudflare Pages。你可以查看下方支持的 Next.js 功能差异,并通过查阅 @cloudflare/next-on-pages 的文档 (opens in a new tab),以及在此处 (opens in a new tab) 了解 Workers 和 Pages 之间的区别。

开始使用

新项目

要创建一个新的 Next.js 应用,预配置为使用 @opennextjs/cloudflare 在 Cloudflare 上运行,运行:

npm create cloudflare@latest -- my-next-app --framework=next --experimental
现有的 Next.js 应用

遵循此处 的指南,在现有的 Next.js 应用中使用 @opennextjs/cloudflare (opens in a new tab)

支持的 Next.js 运行时

Next.js 有 两个“运行时" (opens in a new tab) —— "Edge" 和 "Node.js"。当你使用 @opennextjs/cloudflare 时,你的应用应该使用 Node.js 运行时,它功能更齐全,并允许你使用 Cloudflare Workers 运行时提供的 Node.js APIs (opens in a new tab)

这与 @cloudflare/next-on-pages 有一个重要区别,后者仅支持 "Edge" 运行时。Next.js 中的 Edge Runtime 代码 故意限制了可以使用的 Node.js API (opens in a new tab),并且 "Edge" 运行时不支持所有 Next.js 功能。

支持的 Next.js 版本

@opennextjs/cloudflare 尚未达到 1.0 版本,仍处于积极开发中。我们打算支持 Next.js 14 和 15 的所有次要版本和补丁版本。

为了帮助提高兼容性,我们鼓励你 报告错误 (opens in a new tab) 并贡献代码!

支持的 Next.js 功能

一些 Next.js 功能尚未支持或未经过充分测试。 随着我们朝着发布 1.0 版本进展,我们将更新此列表。

我们欢迎贡献和反馈!

Windows 支持

OpenNext 可以在 Windows 系统上使用,但无法保证对 Windows 的完整支持,原因如下:

  • Next.js 自身的工具链就存在 Windows 支持问题,而 OpenNext 又建立在这些工具之上
  • OpenNext 团队的资源有限,而考虑到上面这一点,完整支持 Windows 的优先级较低,因此在 Windows 上的投入和测试也较少

基于以上原因,您可以自行承担风险在 Windows 下开发应用。如果您没有其他选择,我们建议您:

适用于 Linux 的 Windows 子系统(WSL)允许您在 Windows 机器上运行 Linux 环境,而无需单独的虚拟机或双系统启动。Visual Studio Code 还有一个 扩展 (opens in a new tab),可以让使用 WSL 开发变得非常轻松。

@opennextjs/cloudflare 的工作原理

OpenNext Cloudflare 适配器通过获取 Next.js 构建输出并对其进行转换来工作,以便它可以在 Cloudflare Workers 中运行。

当你将 @opennextjs/cloudflare (opens in a new tab) 作为依赖项添加到你的 Next.js 应用,然后运行 npx opennextjs-cloudflare 时,适配器首先通过运行 package.json 中的 build 脚本来构建你的应用,然后将构建输出转换为你可以使用 Wrangler (opens in a new tab) 在本地运行并部署到 Cloudflare 的格式。

你可以在此处 (opens in a new tab) 查看 @opennextjs/cloudflare 的代码,以了解其在底层的运作方式。