.env

.env 文件用于指定构建/开发环境变量。
此文件应添加到你的 .gitignore 文件中,以避免将密钥推送到仓库。

开发、构建和生成时

Nuxt CLI 在开发模式下以及运行 nuxi buildnuxi generate 时内置了 dotenv 支持。

除了任何进程环境变量之外,如果你的项目根目录中有一个 .env 文件,它将在 开发、构建和生成时 自动加载。在那里设置的任何环境变量都可在你的 nuxt.config 文件和模块中访问。

.env
MY_ENV_VARIABLE=hello
请注意,从 .env 中移除一个变量或完全移除 .env 文件并不会取消已经设置的值。

自定义文件

如果你想使用不同的文件 —— 例如,使用 .env.local.env.production —— 你可以在使用 nuxi 时通过传递 --dotenv 标志来实现。

终端
npx nuxi dev --dotenv .env.local

在开发模式下更新 .env 后,Nuxt 实例会自动重启以应用新的值到 process.env

在您的应用程序代码中,应该使用运行时配置而不是普通的环境变量。

生产环境

服务器构建完成后,你需要在运行服务器时自行设置环境变量。

此时不会读取你的 .env 文件。具体操作因每个环境而异。

这个设计决策是为了确保与各种部署环境的兼容性,其中一些环境可能没有传统的文件系统,如无服务器平台或像 Cloudflare Workers 这样的边缘网络。

由于生产环境中不使用 .env 文件,你必须使用托管环境提供的工具和方法明确地设置环境变量。以下是一些常见做法:

  • 你可以通过终端命令行参数传递环境变量:
    $ DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs
  • 你可以在 shell 配置文件如 .bashrc.profile 中设置环境变量。
  • 许多云服务提供商,如 Vercel、Netlify 和 AWS,提供了在其仪表板、CLI 工具或配置文件中设置环境变量的界面。

生产环境预览

为了本地生产预览的目的,我们推荐使用 nuxi preview,因为使用该命令时,.env 文件将被方便地加载到 process.env 中。请注意,此命令要求依赖项在包目录中安装。

或者,你可以通过终端命令行参数传递环境变量。例如,在 Linux 或 macOS 上:

Terminal
DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs

请注意,对于纯静态站点,在项目预渲染后无法设置运行时配置。

Read more in Docs > Guide > Going Further > Runtime Config.
如果你希望使用构建时设置的环境变量,但并不关心后续更新(或者只需要在应用内部反应式地更新这些变量),那么 appConfig 可能是更好的选择。你可以在 nuxt.config 中(使用环境变量)和项目中的 ~/app.config.ts 文件中定义 appConfig
Read more in Docs > Guide > Directory Structure > App Config.