在前端开发中,我们经常需要在代码中使用许多敏感或私有的数据,例如数据库连接字符串、API 密钥等等。将这些数据明文写入代码是很不安全的,因为代码存在于公共的代码库中,任何人都可以看到它们。@morgs32/dotenvnow 是一个 npm 包,它提供了一种安全存储这些数据的方式,同时还可以方便地在代码中使用检索这些数据。本文将详细介绍如何使用 @morgs32/dotenvnow。
安装
使用以下命令来安装 @morgs32/dotenvnow:
npm install @morgs32/dotenvnow
这个命令将在你的项目中安装 @morgs32/dotenvnow,并将其添加到你的 package.json 文件中。
使用方法
加载 dotenv 文件
要使用 @morgs32/dotenvnow,你需要创建一个 .env 文件来存储私有数据。在这个文件中,将敏感数据存储为键值对,以等号分隔。例如:
DATABASE_URL=postgres://username:password@localhost:5432/mydatabase API_KEY=123456
在你的代码中,使用以下命令来加载 dotenv 文件:
require('dotenvnow').config();
这个命令将加载 .env 文件,并将其中的键值对存储在一个名为 process.env 的对象中。你可以使用这个对象来访问这些键值对,例如:
const dbUrl = process.env.DATABASE_URL; const apiKey = process.env.API_KEY;
配置 dotenv 文件的路径
默认情况下,@morgs32/dotenvnow 会从项目的根目录下加载 .env 文件。如果你想使用不同的路径,可以像下面这样在调用 config() 时指定路径,例如:
const dotenv = require('dotenvnow'); dotenv.config({ path: '/full/custom/path/to/my/env/vars' });
注意,这个路径应该是绝对路径,而不是相对路径。
从环境变量中检索值
除了从 .env 文件中加载键值对外,@morgs32/dotenvnow 还支持从环境变量中检索值。这对于在 CI/CD 流水线中使用和在 Heroku 等平台上部署应用程序时非常有用。
要使用环境变量检索值,请将环境变量的名称作为键,将其前缀 "ENV_" 作为值的前缀,以等号分隔。例如:
ENV_DATABASE_URL=postgres://username:password@localhost:5432/mydatabase ENV_API_KEY=123456
在你的代码中,使用以下命令来加载环境变量:
const dotenv = require('dotenvnow'); dotenv.config();
然后使用以下代码来检索环境变量中的值:
const dbUrl = process.env.DATABASE_URL; const apiKey = process.env.API_KEY;
注意,你不需要在代码中显式指定环境变量前缀 "ENV_"。
示例代码
下面是一个使用 @morgs32/dotenvnow 的示例 Express 应用程序:
-- -------------------- ---- ------- ----- ------- - ------------------ ----- - ------ -- --------------------- ----- --- - --------- ----- ---- - ---- --------- ----- ------ - -------------------- ------------ ----- ---- -- - ------------- ---- ----------- -- ---------------- -- -- - -------------------- --- --------- -- -------------------------- --
在这个示例应用程序中,它首先使用 config() 加载 .env 文件,然后检索 API_KEY 值并在路由处理程序中使用它。
总结
@morgs32/dotenvnow 是一个非常有用的 npm 包,它允许你在代码中安全地存储私有数据,并可以方便地检索它们。在上述示例中,你已经学会了如何使用 @morgs32/dotenvnow,在你的下一个项目中,你可以使用它来存储敏感数据并保护你的项目免受黑客攻击。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60056be981e8991b448e5a45