环境变量
环境变量是指,独立于应用程序代码,特定于环境的变量。
环境变量是由用户自定义的。最常见的环境变量是用于区分开发环境的变量,约定俗成的命名为 NODE_ENV,两个常见值为 development
、production
。
process.env
当 Node.js 进程启动时,会自动加载系统环境变量、用户环境变量到 p
对象上。这个对象在进程运行过程中是可读写的,因此使用时必须考虑值无效的情况。
cross-env
在 Linux、MacOS 系统的终端中,可以简单定义当前终端的用户环境变量
shell
> NODE_ENV=development node
REPL> process.env.NODE_ENV
'development'
同样的方法在 Windows 中会报错。
cross-env
是一个第三方库,用于兼容在各系统中,使用相同的方式定义环境变量
shell
C:\path\to\demo> npm i -D cross-env
C:\path\to\demo> npx cross-env NODE_ENV=development node
REPL> process.env.NODE_ENV
'development'
dotenv
当需要配置的环境变量数量较多时,可以将环境变量写入文件方便维护,在Node.js启动时通过第三方库 dotenv
加载文件内容到p
上。
约定文件位置为:应用根目录 .env
文件
.env
NODE_ENV=development
两种用法:
- 模块导入
js
// CommonJS
require('dotenv').config()
// ES Module
import 'dotenv/config' // 文件内容是一个立即执行函数
- 命令行选项 预加载模块,参考文档
shell
node -r dotenv/config any.js
运行结果如下:
shell
C:\path\to\demo> node -r dotenv/config
REPL> process.env.NODE_ENV
'development'