Cloudflare
操作指南
环境变量

环境变量

本文档介绍处理环境变量的最佳实践方案,该方案在本地开发和部署到 Cloudflare Workers 时都能良好工作。

在 Cloudflare 平台上,您的环境变量可以存储在"环境变量" (opens in a new tab)"密钥" (opens in a new tab)中。两者的区别在于密钥一旦创建后无法通过控制台或 CLI 再次读取。

本地开发

虽然在 Cloudflare 平台上有多种方式为本地开发设置环境变量(例如添加到 wrangler 配置 (opens in a new tab).dev.vars (opens in a new tab) 文件),但这些方法与推荐的开发工作流不兼容,因为在使用 next dev 时这些变量将不可用。

您应该改用 Next.js 的 .env 文件 (opens in a new tab)。这样做可以使环境变量在运行 next dev 和本地使用 wrangler dev 运行 Worker 时都能通过 process.env 访问。

Next.js 的 .env 文件是环境特定的。也就是说,当使用"development"环境时,.env.development 文件会优先于 .env 文件。有关加载顺序 (opens in a new tab)的详细说明,请参阅 Next.js 官方文档。

您应该使用 NEXTJS_ENV 环境变量来选择在本地 Worker 上运行应用时使用的环境,以下是选择"development"环境的方式:


# .dev.vars
NEXTJS_ENV=development

当未显式设置 NEXTJS_ENV 时,默认使用 "production" 环境。

生产环境

.env.dev.vars 是本地文件,不应添加到源代码控制中。你应该使用 Cloudflare 仪表板来设置生产环境的环境变量。

Workers 构建

当你使用 Workers 构建 (opens in a new tab)部署应用时,必须在"构建变量和密钥" (opens in a new tab)中设置环境变量。

通过设置"构建变量和密钥",Workers 构建执行的 Next 构建将能够访问环境变量。它需要这种访问权限来内联 NEXT_PUBLIC_... 变量 (opens in a new tab)并访问 SSG 页面所需的非 NEXT_PUBLIC_... 变量。

运行时变量

你的 Next 应用需要在运行时访问环境变量。你应该始终通过 Cloudflare 仪表板 (opens in a new tab)设置运行时环境变量。

如果从仪表板设置环境变量,可以使用 wrangler 的 --keep-vars (opens in a new tab) 选项来 防止它们被部署删除,例如 opennextjs-cloudflare deploy -- --keep-vars