.env

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

开发、构建和生成时

Nuxt CLI 在开发模式以及运行 nuxt buildnuxt generate 时内置支持 dotenv

除了任何进程环境变量外,如果你的项目根目录下有 .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 文件。具体如何操作因各个环境而异。

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

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

  • 你可以使用终端将环境变量作为参数传递:
    $ NODE_ENV=production DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs
  • 你可以在诸如 .bashrc.profile 的 Shell 配置文件中设置环境变量。
  • 许多云服务提供商(如 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 上:

终端
NODE_ENV=production DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs

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

文档 > 4 X > 指南 > 深入 > 运行时配置中阅读更多内容。
如果你想使用在构建时设置的环境变量,但不在乎以后更新它们(或者只需要应用程序内部响应式地更新它们),那么 appConfig 可能是更好的选择。你既可以在 nuxt.config 中定义 appConfig(使用环境变量),也可以在项目中的 ~/app.config.ts 文件中定义。
文档 > 4 X > 目录结构 > 应用 > 应用配置 中阅读更多内容。