环境变量(environment variable) 安全与工程
别名:
env
进程环境中携带的键值配置来源,优先级最高、可覆盖默认值与 .env 文件。它天然不进代码、不进 git,是传递密钥与按环境切换配置的标准通道。见[第 23 章](/chapters/23-conclusion/)。
它是什么
环境变量(environment variable)是进程环境中携带的键值配置来源:进程启动时由操作系统注入,程序通过 process.env(Node.js)等入口读取。在第 23 章的三段式配置里它优先级最高,可覆盖默认值与 .env 文件——是 CI、部署脚本、临时调试的环境级覆盖通道。12-Factor App 的 Config 原则把它定为标准:环境变量语言与 OS 无关、改动不碰代码、天然按部署区分。
与 .env 文件的关系
.env 文件只是「把环境变量写进文件、启动时再合并进运行环境」的便利手段——解析后还是要进 process.env;所以真实环境变量天然压过 .env(前者优先级更高)。两个细节:环境变量全是字符串,数字/布尔字段要显式 Number() 转换;.env 解决「反复 export」的问题,但不能解决「shell 历史记住密钥」——那是密钥管理的范畴。
在本教程的位置
ch22 的 loadConfig(env = process.env) 只做「读环境变量 + 缺省给默认值」;第 23 章把它升级成三层来源的合并,并把 HOST/PORT 也做成环境变量——部署时随时能改、能被反向代理转发,而不用动代码。生产差距里还有一条:环境变量只能覆盖「进程级配置」,密钥轮换、多租户隔离需要更重的配置体系。