Node.js中的环境变量

401 阅读3分钟

Node.js中的环境变量

环境变量是由操作系统设置的变量。它们与应用逻辑解耦。它们可以通过各种API从应用程序和程序中访问。

有一个名为dotenv 的Node.js库可以帮助你管理和加载环境变量。让我们来看看环境变量的目的,如何使用它们,以及它们在开发环境中的作用。

环境变量的目的

环境变量对于软件开发者来说非常重要,原因有很多。

关心点的分离

关注点分离指的是一个软件设计原则,即计算机程序应该被划分为不同的部分,这样每个部分都能解决一个单独的问题。这意味着,从事某一部分工作的开发人员需要对其他部分有最少的了解。其他部分的细节被放在了一边。

应用配置是代码的一个部分,应该与应用脱钩。良好的软件实践表明,应用配置需要将配置与代码严格分开。这样的配置文件可以作为环境变量来存储。

保护配置密钥

随着云计算的日益普及,越来越多的应用程序正在使用云服务和其他外部API。其中大多数都带有用于控制和访问管理的配置密钥。如果API密钥被添加到应用程序中,并且代码被推送到GitHub上的公共仓库,这可能会导致一个不受监控的访问问题。未知各方可能最终使用你的API密钥,导致你的云服务出现意外账单,以及其他潜在的安全问题。

为了解决这个问题,可以将配置密钥添加为环境变量,并从部署应用程序的封闭环境中调用。

Node.js中的环境变量

在Node.js中,process.env 是一个全局变量,在运行时被注入。它是对系统环境变量状态的一种看法。当我们设置一个环境变量时,它在运行时被加载到process.env ,以后可以被访问。

**dotenv**是npm上的一个模块,可以将环境变量加载到process.envdotenv ,可以通过从npm或yarn上安装它来添加到你的Node.js项目。

# with npm
npm install dotenv

# or with Yarn
yarn add dotenv

在生产环境中,IP地址和运行的端口可能每次都会改变,这取决于服务器。由于我们不能硬编码服务器的端口,我们可以通过使用dotenv 来解决。

创建一个名为index.js 的文件,并在其中添加以下代码。

const express = require("express");
require("dotenv").config();

const app = express();
const port = process.env.PORT || 3000;

app.listen(port, () => {
  console.log(`Server is running on the port ${port}.`);
});

假设我们想在一个开源项目中使用用户名和密码这样的敏感凭证,我们也可以使用dotenv

require("dotenv").config();

const mysql = require("mysql");
let con = mysql.createConnection({
  host: process.env.DB_HOST,
  user: process.env.DB_USER,
  password: process.env.DB_PASS,
});

现在,为了设置环境变量,在项目目录的根部创建一个.env 文件。

DB_HOST=localhost
DB_USER=admin
DB_PASS=password

输入以下变量的值。这将把这些变量加载到process.env 。我们可以把这个.env 文件添加到.gitignore ,这样我们的凭证就会受到保护。

部署中的环境变量

在部署到Section、Vercel、Netlify或Heroku等服务时,可以设置环境变量,以便我们部署的应用程序能够访问它们。

Netlify Dashboard

以Netlify为例,打开你要部署的应用程序的Netlify仪表板。

Netlify Settings

转到构建和部署->环境变量

Environment Variables

现在,设置这些变量并保存。

你的环境变量已经成功设置为在Netlify上部署。