node服务端配置process.env环境变量在全局文件中使用

        日常开发中我们会遇到不同运行环境下使用到不同值的情况,如果我们每次开启服务测试时来回去修改URL路径,那么就会很愚钝,那最好的方法就是在运行时根据不同的运行命令去使用不同的全局值,可以使用dotenv模块来解决这个问题。dotenv可以从一个文件中加载环境变量,并将它们注入到process.env中。这样,在整个应用程序中都可以访问这些环境变量。

以下是使用dotenv模块的步骤:

  1. 安装dotenv模块

    npm install dotenv
    
  2. 在启动应用程序的入口文件中加载.env文件

    require('dotenv').config({ path: './env.web' });
    

    在这个例子中,我们使用config方法加载了名为env.web的文件,并将其中的环境变量注入到process.env中。

  3. 在应用程序中使用环境变量

    const nodeUrl = process.env.NODE_URL;
    console.log(`Node URL is ${nodeUrl}`);
    

    在这个例子中,我们使用process.env对象读取名为NODE_URL的环境变量,并将其存储在nodeUrl变量中。然后我们将其打印出来。

需要注意的是,在.env文件中定义的所有变量都会被注入到process.env中。如果有多个.env文件,可以通过path选项来指定要加载的文件,并按照需要加载多个文件。

另外,需要注意的是,.env文件中的变量不应该包含引号或其他特殊字符。每行的格式应该是VARNAME=value。例如:NODE_URL=asd

        如果需要在不同应用程序中使用相同的环境变量,请将它们放置在.env文件中,并将文件放置在共享位置。这样,所有使用这些变量的应用程序都可以加载它们,这样就避免了在多个应用程序中重复定义环境变量的问题。


        以上所说,如果现在有.env.web和.env.app两个文件,里面都有NODE_URL对应着两个不同的值,该如何使用运行命令去指定运行哪个文件呢?

        可以通过使用命令行参数来实现这个功能。在Node.js中,可以通过process.argv数组来获取命令行参数。

例如,你可以运行以下命令来指定要加载的.env文件:

node app.js --env=app

在这个例子中,我们使用了--env选项来指定要加载的.env文件的名称。然后,我们在应用程序的入口文件中检查该选项,并加载相应的文件。

以下是一个示例:

app.js:

const dotenv = require('dotenv');

// 解析命令行参数
const args = process.argv.slice(2);
const env = args.find(arg => /^--env=/.test(arg)) || '--env=web';
const envFile = env.split('=')[1];

// 加载env文件
dotenv.config({ path: `./${envFile}.env` });

// 使用环境变量
console.log(`Node URL is ${process.env.NODE_URL}`);

在这个例子中,我们使用process.argv数组获取了所有命令行参数,并使用args.find方法找到了--env选项。然后,我们将其值分离出来,并使用它来加载相应的.env文件。如果没有指定--env选项,则默认加载env.web文件。

需要注意的是,在实际应用中,你可能需要对命令行参数进行更复杂的处理,例如检查参数是否合法、使用默认值等等。但是,这个例子可以作为一个简单的起点,帮助你实现指定加载哪个.env文件的功能。

猜你喜欢

转载自blog.csdn.net/weixin_60678263/article/details/129423375