摘要:在本教程中,您将学习如何使用 Node.js 的 process.env
属性来读取环境变量。
介绍 node.js process 模块
process
是 Node.js 的核心模块。process
模块包含一个名为 env
的属性,该属性包含所有环境变量。
要在 Windows 上设置环境变量,请使用 SET
命令。例如
SET NODE_ENV=development
Code language: JavaScript (javascript)
在 macOS 或 Linux 上,使用 EXPORT
命令
EXPORT NODE_ENV=development
Code language: JavaScript (javascript)
在此语法中,NODE_ENV
是一个环境变量,其值为 'development'
。
要访问 Node.js 中的 NODE_ENV
,请使用 process.env
,如下所示
process.env.NODE_ENV
Code language: JavaScript (javascript)
在此示例中,proces.env.NODE_ENV
返回字符串 'development'
。
如果未设置 NODE_ENV
,则 process.env.NODE_ENV
将返回 undefined
。
以下语句使用 逻辑或运算符 来返回当前 Node.js 环境或 development
(如果未设置 NODE_ENV
)
const nodeEnv = process.env.NODE_ENV || 'development';
Code language: JavaScript (javascript)
最佳实践是在环境变量中存储凭据信息,例如数据库用户名和密码。
让我们看一些使用 Node.js process.env
的实际示例。
使用环境变量安全存储凭据信息
以下示例展示了如何使用 process.env
访问当前 Node.js 环境并相应地加载配置。
项目结构将如下所示
├── config
| ├── app.js
| ├── development.js
| └── production.js
├── index.js
└── package.json
Code language: plaintext (plaintext)
首先,创建一个名为 env
的新文件夹。
其次,运行 npm init
命令来初始化一个新包
npm init --yes
Code language: JavaScript (javascript)
第三,在项目根目录中创建一个名为 config
的新文件夹
mkdir config
Code language: JavaScript (javascript)
第四,在 config
文件夹中创建三个文件 app.js,
development.js
和 production.js
。development.js
在开发环境中存储数据库凭据
module.exports = {
database: {
host: "localhost",
port: 27017,
username: "admin",
password: "Password1",
},
};
Code language: JavaScript (javascript)
production.js
文件存储与 development.js
相同的信息。但是,它使用环境变量来代替
module.exports = {
database: {
host: process.env.DB_HOST,
port: process.env.DB_PORT,
username: process.env.DB_USERNAME,
password: process.env.DB_PASSWORD,
},
};
Code language: JavaScript (javascript)
您应该在生产环境中设置环境变量 DB_HOST
、DB_PORT
、DB_USERNAME
和 DB_PASSWORD
。
请注意,如果您将机密信息存储在 production.js
文件中并将其提交到公共存储库,那么您将使应用程序的安全性面临风险。
app.js
将根据当前 Node.js 环境需要 production.js
或 development.js
let config;
const nodeEnv = process.env.NODE_ENV || "development";
if (nodeEnv === "devlopment") {
config = require("./development.js");
} else {
config = require("./production.js");
}
module.exports = config;
Code language: JavaScript (javascript)
第五,从 app.js
中的 index.js
文件加载配置信息
const config = require("./config/app.js");
console.log(config);
Code language: JavaScript (javascript)
使用环境变量来控制要运行的代码
有时,您可能希望在开发环境中执行某些代码,但在生产环境中不执行。
例如,您可能希望在开发环境中显示调试信息,但在生产环境中不显示。
要做到这一点,您可以使用 process.env
来访问 DEBUG
环境变量。例如
首先,创建一个名为 debug.js
的新模块,并定义一个函数,该函数仅在设置了 DEBUG
时才记录信息
module.exports = (data, level = "info") => {
if (!process.env.DEBUG) return;
switch (level) {
case "info":
console.info(data);
break;
case "error":
console.error(data);
break;
case "warning":
console.warn(data);
break;
default:
console.log(data);
}
};
Code language: JavaScript (javascript)
其次,将 debug.js
加载到 index.js
文件中
const debug = require("./debug");
Code language: JavaScript (javascript)
第三,向控制台显示一些调试信息
const debug = require("./debug");
debug("The app is starting....");
Code language: JavaScript (javascript)
如果您将 DEBUG
环境变量设置为 true,您将看到输出。
总结
process
是 Node.js 的核心模块。process.env
属性保存所有环境变量。- 将机密信息存储在环境变量中,并使用
process.env
来访问它们。