摘要:在本教程中,您将学习如何使用 Node.js 的 process.env 属性来读取环境变量。
介绍 node.js process 模块
process 是 Node.js 的核心模块。process 模块包含一个名为 env 的属性,该属性包含所有环境变量。
要在 Windows 上设置环境变量,请使用 SET 命令。例如
SET NODE_ENV=developmentCode language: JavaScript (javascript)在 macOS 或 Linux 上,使用 EXPORT 命令
EXPORT NODE_ENV=developmentCode language: JavaScript (javascript)在此语法中,NODE_ENV 是一个环境变量,其值为 'development'。
要访问 Node.js 中的 NODE_ENV,请使用 process.env,如下所示
process.env.NODE_ENVCode 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.jsonCode language: plaintext (plaintext)首先,创建一个名为 env 的新文件夹。
其次,运行 npm init 命令来初始化一个新包
npm init --yesCode language: JavaScript (javascript)第三,在项目根目录中创建一个名为 config 的新文件夹
mkdir configCode 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来访问它们。