Node.js env 环境变量多种配置方式

目录

process.env

配置方式

[dotenv 使用](#dotenv 使用)

cross-env


process.env

在 Node.js 中,你可以使用 process.env 对象来读取环境变量。这个对象包含了所有的环境变量,你可以通过变量名来访问这些变量的值。

例如,如果你有一个名为 MY_VARIABLE 的环境变量,你可以这样读取它的值:

复制代码
const myVariable = process.env.MY_VARIABLE;
console.log(myVariable);

这将打印出 MY_VARIABLE 环境变量的值。

注意,环境变量的名称是大小写敏感的,所以在访问环境变量时,你需要确保变量名的大小写与环境变量的大小写完全一致。

配置方式

process.env 中的环境变量来自于操作系统的环境变量。在 Node.js 中,你可以通过 process.env 对象来访问这些环境变量。这些环境变量通常是在启动 Node.js 进程时设置的,可以通过以下方式设置:

  1. 在操作系统级别设置

    • 在 Unix/Linux 系统中,可以在 shell 中使用 export 命令来设置环境变量。例如:

      复制代码
      export MY_VARIABLE=value
    • 在 Windows 系统中,可以通过控制面板或者命令行来设置环境变量。例如:

      复制代码
      set MY_VARIABLE=value
  2. 在应用程序启动时设置

    • 在 Node.js 应用程序中,可以在启动时通过命令行参数或者脚本文件来设置环境变量。例如:

      复制代码
      MY_VARIABLE=value node app.js

      或者在 package.json 文件中设置:

      复制代码
      {
        "scripts": {
          "start": "MY_VARIABLE=value node app.js"
        }
      }
  3. 在应用程序代码中设置

    • 在 Node.js 应用程序中,可以使用 process.env 对象来设置环境变量。例如:

      复制代码
      process.env.MY_VARIABLE = 'value';

通过以上方式设置的环境变量,都可以通过 process.env 对象来访问。例如:

复制代码
console.log(process.env.MY_VARIABLE); // 输出 'value'

请注意,环境变量的名称通常是大写的,以区分于其他变量。在设置和访问环境变量时,大小写敏感。

dotenv 使用

dotenv 是一个 Node.js 库,它允许你将环境变量从一个 .env 文件加载到 process.env 中。这样做的好处是,你可以在代码中使用这些环境变量,而不必硬编码它们,并且可以在不同的环境(如开发、测试、生产)中轻松切换这些环境变量。

dotenv 库的原理如下:

  1. 安装 :首先,你需要在你的 Node.js 项目中安装 dotenv 库。你可以使用 npm(Node Package Manager)来安装它:

    复制代码
    npm install dotenv
  2. 创建 .env 文件 :在你的项目根目录下创建一个 .env 文件,并在其中定义你的环境变量。例如:

    复制代码
    DB_HOST=localhost
    DB_USER=root
    DB_PASS=s1mpl3
  3. 加载 .env 文件 :在你的 Node.js 应用程序中,使用 require('dotenv').config() 来加载 .env 文件。这通常在你的应用程序的入口文件(如 app.jsserver.js)中完成。例如:

    复制代码
    require('dotenv').config();
  4. 使用环境变量 :现在,你可以在你的代码中使用 process.env 对象来访问这些环境变量。例如:

    复制代码
    const dbHost = process.env.DB_HOST;
    const dbUser = process.env.DB_USER;
    const dbPass = process.env.DB_PASS;
  5. 环境变量的优先级dotenv 加载的环境变量会覆盖任何已经存在于 process.env 中的同名变量。这意味着,如果你的操作系统中已经设置了 DB_HOST 环境变量,那么 dotenv 加载的值将覆盖它。

  6. 忽略文件 :默认情况下,dotenv 会加载 .env 文件。如果你想忽略某个 .env 文件,可以创建一个 .env.example 文件,并在其中列出所有的环境变量,但不提供任何值。这样,其他开发者就可以根据这个文件创建自己的 .env 文件,而不会覆盖已经存在的环境变量。

  7. 加载特定环境的 .env 文件dotenv 允许你根据当前的环境(如 developmenttestproduction)加载不同的 .env 文件。例如,你可以有 .env.development.env.test.env.production 文件,然后在你的应用程序中根据需要加载相应的文件。

    复制代码
    require('dotenv').config({ path: `.env.${process.env.NODE_ENV}` });

通过使用 dotenv,你可以轻松地管理和使用环境变量,而不必担心它们会泄露到版本控制系统中。

cross-env

在大多数 Unix-like 系统(如 Linux 和 macOS)中,你可以直接在命令行中设置环境变量并运行 Node.js 应用程序,而不需要使用 cross-env。例如,你可以使用以下命令:

复制代码
NODE_ENV=production node app.js

这将在当前 shell 会话中设置 NODE_ENV 环境变量为 production,然后启动 app.js 文件。

然而,如果你在 Windows 系统上运行上述命令,它可能不会按预期工作,因为 Windows 的命令行语法与 Unix-like 系统不同。在 Windows 中,你需要使用 set 命令来设置环境变量,然后启动 Node.js 应用程序:

复制代码
set NODE_ENV=production
node app.js

或者,你可以使用 cross-env 库来在 Windows 上设置环境变量,因为 cross-env 是一个跨平台的工具,它会根据操作系统自动选择正确的命令。

如果你不想使用 cross-env,并且你的应用程序只在 Unix-like 系统上运行,那么直接使用 NODE_ENV=production node app.js 命令是完全可以的。然而,如果你需要在 Windows 上运行应用程序,你应该使用 set 命令或者 cross-env

如果你在 Windows 上使用 cross-env,它会自动检测你的操作系统并使用适当的命令来设置环境变量。这样做的好处是,你的代码可以在不同的操作系统上运行,而无需修改。

相关推荐
网络点点滴3 小时前
简述Node.js运行时核心架构
架构·node.js
小粉粉hhh3 小时前
Node.js(三)——模块化
node.js
晓杰'4 小时前
从0到1实现 Balatro 游戏后端(1):项目规划与牌型判断实现
后端·websocket·typescript·node.js·游戏开发·项目实战·nestjs
@PHARAOH4 小时前
WHAT - npm和corepack
前端·npm·node.js
MPGWJPMTJT5 小时前
从 Volta 迁移到 mise:Windows 下 Node 版本管理切换记录
前端·node.js
zhangfeng11335 小时前
Remotion 渲染视频脚本 ,自动化编辑视频 Node.js 层面是“单线程 JS”,但在实际渲染时是“高度并行”的。
node.js·自动化·音视频
羽师6 小时前
Node.js和npx关系
node.js
灵魂学者6 小时前
使用 Electron 打包项目构建 .EXE 桌面应用程序(简)
electron·node.js·vue·build·桌面应用程序
右耳朵猫AI6 小时前
Node.js技术周刊 2026年第14周
node.js
gogoing20 小时前
Node.js 模块查找策略(require 完整流程)
javascript·node.js