如何从 readFile 创建常量?
How do you create a constant from readFile?
所以我想为 Telegram 编写一个机器人,我只想从 .txt 文件中获取令牌(授权机器人的秘密),这样我就不会不小心将秘密推送到我的回购协议中。
我以前试过这个:
const token = fileReader.readFile('BOT_CREDENTIALS.txt', (err, data) => {
if (err) throw err;
console.log(data.toString());
return data.toString();
});
console.log(token);
第一个 console.log 实际上 returns 来自文件的标记,但第二个 returns "undefinded".
所以我有一个问题,如何从该文件中获取令牌作为我以后可以使用的常量?
我假设您的 fileReader 变量可能是 Node fs module.
readfile 是一个异步函数。读取文件,就像发送 HTTP 请求一样,需要时间,你的代码中发生了什么:
- 执行请求函数,传递一个匿名函数作为回调,以便在将来某个时间响应可用时执行。
- 你的第二个 console.log 会立即输出到控制台。
- 将来某个时候,响应返回并执行我们的回调,将其主体输出到控制台
在异步程序中,您可以有两行代码(L1 后接 L2),其中 L1 将某些任务安排在 运行 以后,但 L2 运行s 在该任务之前完成。
在同步程序中,如果您有两行代码(L1 后跟 L2),那么 L2 无法开始 运行ning 直到 L1 完成执行。
NodeJS/Javascript 是异步的。
如果你想同步读取文件并存储它,你可以使用readfileSync函数,你的代码如下所示:
const fs = require('fs')
const token = fs.readFileSync('BOT_CREDENTIALS.txt')
console.log(token.toString())
请注意,这是一个阻塞操作,因此,在文件读取完成之前,readfile 下面的任何内容都不会执行,这包括整个事件循环线程。
至于您对提交凭据的担忧,您可以使用环境变量,这是一种有据可查的普遍做法。
一个不错的选择是 dotenv module.
As early as possible in your application, require and configure
dotenv.
require('dotenv').config()
Create a .env file in the root directory of
your project. Add environment-specific variables on new lines in the
form of NAME=VALUE.
在你的情况下,你会像这样使用它:
.env file
TOKEN=SOMETHING
Javascript file
const token = process.ENV.TOKEN
所以我想为 Telegram 编写一个机器人,我只想从 .txt 文件中获取令牌(授权机器人的秘密),这样我就不会不小心将秘密推送到我的回购协议中。
我以前试过这个:
const token = fileReader.readFile('BOT_CREDENTIALS.txt', (err, data) => {
if (err) throw err;
console.log(data.toString());
return data.toString();
});
console.log(token);
第一个 console.log 实际上 returns 来自文件的标记,但第二个 returns "undefinded".
所以我有一个问题,如何从该文件中获取令牌作为我以后可以使用的常量?
我假设您的 fileReader 变量可能是 Node fs module.
readfile 是一个异步函数。读取文件,就像发送 HTTP 请求一样,需要时间,你的代码中发生了什么:
- 执行请求函数,传递一个匿名函数作为回调,以便在将来某个时间响应可用时执行。
- 你的第二个 console.log 会立即输出到控制台。
- 将来某个时候,响应返回并执行我们的回调,将其主体输出到控制台
在异步程序中,您可以有两行代码(L1 后接 L2),其中 L1 将某些任务安排在 运行 以后,但 L2 运行s 在该任务之前完成。
在同步程序中,如果您有两行代码(L1 后跟 L2),那么 L2 无法开始 运行ning 直到 L1 完成执行。
NodeJS/Javascript 是异步的。
如果你想同步读取文件并存储它,你可以使用readfileSync函数,你的代码如下所示:
const fs = require('fs')
const token = fs.readFileSync('BOT_CREDENTIALS.txt')
console.log(token.toString())
请注意,这是一个阻塞操作,因此,在文件读取完成之前,readfile 下面的任何内容都不会执行,这包括整个事件循环线程。
至于您对提交凭据的担忧,您可以使用环境变量,这是一种有据可查的普遍做法。 一个不错的选择是 dotenv module.
As early as possible in your application, require and configure dotenv.
require('dotenv').config()
Create a .env file in the root directory of your project. Add environment-specific variables on new lines in the form of NAME=VALUE.
在你的情况下,你会像这样使用它:
.env file
TOKEN=SOMETHING
Javascript file
const token = process.ENV.TOKEN