.env
.env 文件用于指定构建/开发时的环境变量。
应将此文件添加到你的
.gitignore 文件中,以避免将密钥提交到代码仓库中。开发、构建和生成阶段
Nuxt CLI 内置了dotenv支持,适用于开发模式以及运行 nuxt build 和 nuxt generate 命令时。
除了现有的进程环境变量外,如果你的项目根目录下存在 .env 文件,它将会在开发、构建和生成阶段自动加载。其中设置的任何环境变量都可以在你的 nuxt.config 文件和模块中访问。
.env
MY_ENV_VARIABLE=hello
请注意,从
.env 中删除某个变量或完全删除 .env 文件,并不会取消已设置的变量值。自定义文件
如果你想使用不同的文件(例如使用 .env.local 或 .env.production),可以通过在使用 Nuxt CLI 时传递 --dotenv 标志来实现。
终端
npx nuxt dev --dotenv .env.local
在开发模式下更新 .env 时,Nuxt 实例会自动重启,以便将新值应用到 process.env 中。
在你的应用程序代码中,你应该使用 运行时配置 (Runtime Config),而不是直接使用普通的 env 变量。
生产环境
在服务器构建完成后,你需要负责在运行服务器时设置环境变量。
此时 .env 文件将不再被读取。实现方式因环境而异。
这一设计决策是为了确保在各种部署环境中的兼容性,因为有些环境(如 Serverless 平台或 Cloudflare Workers 等边缘网络)可能没有传统的文件系统。
由于 .env 文件在生产环境中不会被使用,你必须使用托管环境提供的工具和方法来显式设置环境变量。以下是一些常见的方法:
- 你可以在终端使用参数传递环境变量:
$ DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs - 你可以在 shell 配置文件(如
.bashrc或.profile)中设置环境变量。 - 许多云服务提供商(如 Vercel、Netlify 和 AWS)通过其控制面板、CLI 工具或配置文件提供了设置环境变量的界面。
runtimeConfig在生产环境中不会获取不是以 NUXT_ 开头的环境变量 (https://nuxtjs.org.cn/docs/4.x/guide/going-further/runtime-config#environment-variables).生产环境预览
对于本地生产环境预览,我们建议使用 nuxt preview,因为使用该命令时,.env 文件会被加载到 process.env 中以方便使用。请注意,此命令要求在包目录中安装依赖项。
或者你也可以在终端使用参数传递环境变量。例如,在 Linux 或 macOS 上:
终端
DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs
请注意,对于纯静态站点,在项目预渲染(prerendered)完成后,无法再设置运行时配置。