.env
.env 文件用于指定构建/开发时的环境变量。
应将此文件添加到你的 .gitignore 文件中,以避免将密钥推送到仓库。
开发、构建与生成阶段
Nuxt CLI 在开发模式下以及运行 nuxt build 和 nuxt generate 时,内置了 dotenv 支持。
除了任何进程环境变量外,如果你的项目根目录中存在 .env 文件,它会在开发、构建和生成阶段被自动加载。其中设置的任何环境变量都可以在你的 nuxt.config 文件和模块中访问。
MY_ENV_VARIABLE=hello
.env 中移除某个变量或彻底删除 .env 文件,并不会取消已经设置的值。自定义文件
如果你想使用不同的文件——例如 .env.local 或 .env.production——可以在使用 Nuxt CLI 时通过 --dotenv 标志来指定。
npx nuxt dev --dotenv .env.local
在开发模式下更新 .env 时,Nuxt 实例会自动重启,以将新值应用到 process.env。
在你的应用代码中,应使用运行时配置而不是普通环境变量。
生产环境
在服务器构建完成后,你需要负责在运行服务器时设置环境变量。
此时不会读取你的 .env 文件。具体做法因环境而异。
做出这一设计决定是为了确保跨各种部署环境的兼容性,其中一些环境可能没有传统的文件系统,例如无服务器平台或像 Cloudflare Workers 这样的边缘网络。
由于生产环境中不使用 .env 文件,你必须使用托管环境提供的工具和方法显式设置环境变量。以下是一些常见做法:
- 你可以通过终端将环境变量作为参数传入:
$ NODE_ENV=production DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs - 你可以在 shell 配置文件(如
.bashrc或.profile)中设置环境变量。 - 许多云服务提供商(如 Vercel、Netlify 和 AWS)都提供了通过仪表盘、CLI 工具或配置文件设置环境变量的界面。
在生产环境中,runtimeConfig 不会读取不以 NUXT_ 开头的环境变量。
生产环境预览
出于本地生产预览的目的,我们建议使用 nuxt preview,因为使用此命令时,.env 文件会被加载到 process.env 中以便使用。请注意,此命令要求依赖已安装在包目录中。
或者,你也可以通过终端将环境变量作为参数传入。例如在 Linux 或 macOS 上:
NODE_ENV=production DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs
请注意,对于纯静态站点,在项目被预渲染之后,无法再设置运行时配置。
appConfig 可能是更好的选择。你可以在 nuxt.config(使用环境变量)中,也可以在项目内的 ~/app.config.ts 文件中定义 appConfig。阅读更多