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

相关推荐
垣宇9 小时前
Vite 和 Webpack 的区别和选择
前端·webpack·node.js
爱吃南瓜的北瓜10 小时前
npm install 卡在“sill idealTree buildDeps“
前端·npm·node.js
翻滚吧键盘10 小时前
npm使用了代理,但是代理软件已经关闭导致创建失败
前端·npm·node.js
浪九天11 小时前
node.js的版本管理
node.js
浪九天12 小时前
node.js的常用指令
node.js
浪九天15 小时前
Vue 不同大版本与 Node.js 版本匹配的详细参数
前端·vue.js·node.js
小纯洁w1 天前
Webpack 的 require.context 和 Vite 的 import.meta.glob 的详细介绍和使用
前端·webpack·node.js
熬夜不洗澡1 天前
Node.js中不支持require和import两种导入模块的混用
node.js
bubusa~>_<1 天前
解决npm install 出现error,比如:ERR_SSL_CIPHER_OPERATION_FAILED
前端·npm·node.js
天下皆白_唯我独黑1 天前
npm 安装扩展遇到证书失效解决方案
前端·npm·node.js