Nodejs process.env

摘要:在本教程中,您将学习如何使用 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.jsproduction.jsdevelopment.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_HOSTDB_PORTDB_USERNAMEDB_PASSWORD

请注意,如果您将机密信息存储在 production.js 文件中并将其提交到公共存储库,那么您将使应用程序的安全性面临风险。

app.js 将根据当前 Node.js 环境需要 production.jsdevelopment.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 来访问它们。
本教程对您有帮助吗?