.env
一个 .env 文件指定了你的构建/开发时环境变量。
此文件应添加到你的
.gitignore
文件中,以避免将秘密推送到你的代码库中。开发、构建和生成时
Nuxt CLI 在开发模式以及运行 nuxi build
和 nuxi generate
时内置了 dotenv 支持。
除了任何进程环境变量之外,如果你的项目根目录下有一个 .env
文件,它将在开发、构建和生成时自动加载。任何在那里设置的环境变量都将在 nuxt.config
文件和模块中可访问。
.env
MY_ENV_VARIABLE=hello
请注意,从
.env
中移除一个变量或完全移除 .env
文件不会取消已经设置的值。自定义文件
如果你想使用不同的文件,例如 .env.local
或 .env.production
,可以在使用 nuxi
时通过传递 --dotenv
标志来实现。
Terminal
npx nuxi dev --dotenv .env.local
在开发模式中更新 .env
时,Nuxt 实例会自动重启,以将新值应用于 process.env
。
在你的应用程序代码中,你应该使用 运行时配置 而不是普通的环境变量。
生产环境
在你的服务器构建完成后,你需要在运行服务器时设置环境变量。
此时不会读取你的 .env
文件。具体怎么做因每个环境而异。
这一设计决策是为了确保在各种部署环境中兼容,有些环境可能没有传统的文件系统可用,例如无服务器平台或类似 Cloudflare Workers 的边缘网络。
由于在生产中不使用 .env
文件,因此你必须使用你的托管环境提供的工具和方法显式设置环境变量。以下是一些常见的方法:
- 可以通过终端将环境变量作为参数传递:
$ DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs
- 可以在
.bashrc
或.profile
等 shell 配置文件中设置环境变量。 - 许多云服务提供商,例如 Vercel、Netlify 和 AWS,提供通过其仪表板、CLI 工具或配置文件设置环境变量的接口。
生产预览
为了本地生产预览,我们建议使用 nuxi preview
,因为使用此命令时,.env
文件将加载到 process.env
中以方便使用。请注意,此命令需要在包目录中安装依赖。
或者,你也可以通过终端将环境变量作为参数传递。例如,在 Linux 或 macOS 上:
Terminal
DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs
请注意,对于纯静态站点,在项目预渲染后无法设置运行时配置。