likes
comments
collection
share

你家的钥匙被别人拿走了!!!

作者站长头像
站长
· 阅读数 37

引言

想象一下,你家里有一个保险箱,里面存放着重要的文件和贵重物品。这个保险箱有一把锁,需要特定的钥匙才能打开。但是,你不想让这把钥匙随意暴露在家中,以免被访客看到或被孩子误拿,于是你决定找一个秘密的地方藏起来,比如放在一个上了锁的抽屉里,而这个抽屉的钥匙只由你一个人保管。那该怎么办呢?让我们继续往下看吧。

你家的钥匙被别人拿走了!!!

钥匙该放哪?

在编程和网站开发中,.env 文件就像是那个藏着重要钥匙的抽屉。它是一个存储敏感信息如数据库密码、API密钥等的文件,这些信息对于程序运行是必要的,但又不能直接写在代码中公开显示。就好比你不会把保险箱的钥匙挂在墙上,而是把它放在一个安全的地方——.env 文件。

当你需要使用这些敏感信息时,程序会像你从秘密抽屉中取出钥匙一样,通过环境变量来获取这些数据,保证了即使代码被他人查看,关键信息仍然是保密的。这样,你就可以确保敏感数据的安全,同时又不影响程序的功能。

所以.env 文件提供了一种方式来私密且灵活地管理项目中的敏感配置信息,就像我们在家中为重要钥匙找一个既安全又方便取用的秘密存放地点一样。

你家的钥匙被别人拿走了!!!

该怎么调用这个“抽屉”呢?

这就要用到Node.js里面的模块了 --> dotenv

什么是dotenv?

dotenv是一个轻量级的Node.js库,可以从.env文件中读取并自动将环境变量注入到进程中。.env文件是一个纯文本文件,是一个环境变量对象,包含所有的环境变量(以键值对的方式存在),用于定义环境变量。 以下是一个基本的.env文件示例:

在一个名为.env的文本文件中以键值对的形式定义环境变量

你家的钥匙被别人拿走了!!!

然后,在你的Node.js应用程序中,您可以像访问任何其他环境变量一样访问这些变量:

    console.log(process.env,'MYSQL_USER');
    console.log(process.env,'MYSQL_USER_PASSWORD');

使用dotenv的优点

  • 隔离开发和生产环境: 通过将环境变量存储在单独的.env文件中,您可以确保在不同环境中使用不同的配置。
  • 易于管理: .env文件是易于阅读和编辑的纯文本文件,使您能够快速更新和更改环境变量。
  • 安全性: 通过将敏感信息(如密码和API密钥)存储在.env文件中
  • 版本控制排除:  .env文件通常会被排除在版本控制之外,确保隐私。

如何使用dotenv?

首先,那肯定是安装dotenv咯。安装dotenv的命令是:

    npm i dotenv
//i 是install的缩写,也可以是下面那行命令
    npm install dotenv

接下来,就是在你创建的Node.js应用程序中(通常是main.js或者index.js),引入dotenv模块,并且调用config():

require('dotenv').config();

然后,就可以使用.env文件中的环境变量了哦

举例

来举个例子吧,就用之前的openai中的密钥为例

ps:由于之前没用dotenv这个包,我的密钥被别人用好多次,导致我自己无法正常使用了 😒😒😒😒😒难绷了hxd

  • 先创建一个main.js 项目,打开该文件的集成终端,然后输入以下命令:
// 先初始化,之后就出现一个package.json文件
    npm init -y
// 安装 dotenv 模块
    npm i dotenv
//安装 openai 模块
    npm i openai

  • 安装完后,点开package.json文件,你会看到以下东西:

你家的钥匙被别人拿走了!!!

ps:安装模块成功会向package.json添加 dependencies 依赖的声明,而跟着的是这俩个模块的版本号

  • 创建一个.env的文件,添加以下内容:

你家的钥匙被别人拿走了!!!

  • 然后就是在你创建的main.js文件添加代码了:
const OpenAI=require('openai');
require('dotenv').config();
const client = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY ,
    baseURL: "https://api.chatanywhere.tech/v1",
})

const getChatResponse = async function (model,prompt,n) {
    const reponse = await client.chat.completions.create({
        
        model: model, 
        messages: [
          {
            role: "user",
            content: prompt
          }
        ]
      });
    return reponse.choices[0].message.content;
}

    async function main () {
            let prompt=`
                您的任务是以一致的风格回答问题。

                <孩子>: 教我耐心。

                <祖父母>: 挖出最深峡谷的河流源于一处不起眼的泉眼;最宏伟的交响乐从单一的音符开始;最复杂的挂毯以一根孤独的线开始编织。

                <孩子>: 教我韧性。
                `
             const reponse = await getChatResponse("gpt-3.5-turbo", prompt)
             console.log(reponse);
         }
main () ;
         
  • 随后在集成终端中运行您的程序吧,通过在集成终端中输入node main.js,就可以得到:

你家的钥匙被别人拿走了!!!

总结

dotenv是一种简单而实用的方法,用于管理您的Node.js应用程序的环境变量。它可以简化配置管理,并有助于确保您的敏感信息安全。立即开始使用dotenv,为您的应用程序带来更好的可维护性和安全性!

快去动手试试吧,有什么问题评论区见哦

你家的钥匙被别人拿走了!!!

写得不好的地方以及需要修改的地方,欢迎大佬亲临指正昂💞

转载自:https://juejin.cn/post/7371716394301685798
评论
请登录