Node.js中的环境变量
环境变量是由操作系统设置的变量。它们与应用逻辑解耦。它们可以通过各种API从应用程序和程序中访问。
有一个名为dotenv 的Node.js库可以帮助你管理和加载环境变量。让我们来看看环境变量的目的,如何使用它们,以及它们在开发环境中的作用。
环境变量的目的
环境变量对于软件开发者来说非常重要,原因有很多。
关心点的分离
关注点分离指的是一个软件设计原则,即计算机程序应该被划分为不同的部分,这样每个部分都能解决一个单独的问题。这意味着,从事某一部分工作的开发人员需要对其他部分有最少的了解。其他部分的细节被放在了一边。
应用配置是代码的一个部分,应该与应用脱钩。良好的软件实践表明,应用配置需要将配置与代码严格分开。这样的配置文件可以作为环境变量来存储。
保护配置密钥
随着云计算的日益普及,越来越多的应用程序正在使用云服务和其他外部API。其中大多数都带有用于控制和访问管理的配置密钥。如果API密钥被添加到应用程序中,并且代码被推送到GitHub上的公共仓库,这可能会导致一个不受监控的访问问题。未知各方可能最终使用你的API密钥,导致你的云服务出现意外账单,以及其他潜在的安全问题。
为了解决这个问题,可以将配置密钥添加为环境变量,并从部署应用程序的封闭环境中调用。
Node.js中的环境变量
在Node.js中,process.env 是一个全局变量,在运行时被注入。它是对系统环境变量状态的一种看法。当我们设置一个环境变量时,它在运行时被加载到process.env ,以后可以被访问。
**dotenv**是npm上的一个模块,可以将环境变量加载到process.env 。dotenv ,可以通过从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为例,打开你要部署的应用程序的Netlify仪表板。

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

现在,设置这些变量并保存。
你的环境变量已经成功设置为在Netlify上部署。