有一段时间我一直想做点什么,但是没有运气,所以我发现自己在这里。
我基本上有两个Javascript文件(index.js和run.js)以及一个名为tasks的文件夹,其中包含几个名为run-1.json,run-2.json等的json文件。
我想要实现的是只在我的终端中运行index.js,然后对于tasks文件夹中的每个json文件,它读取该json文件并获取电子邮件,然后使用该电子邮件在run.js中运行一个名为login的函数。。。
run-1.json,run-2.json等文件:
{
"email":"run1@gmail.com"
}
index.js文件:
const taskFolder = './tasks/';
const fsPromise = require('fs').promises;
const fs = require('fs');
fs.readdir(taskFolder, (err, files) => {
files.forEach(file => {
async function getTasks(){
let data = await fsPromise.readFile(`${taskFolder}${file}`);
let parsedData = JSON.parse(data);
email = parsedData.email;
// do something here that runs the login function in run.js using the email variable
}
getTasks();
});
});
run.js文件:
async function login(){
console.log(email);
}
所以基本上,如果我在tasks文件夹中有5个json文件,每个文件都有单独的电子邮件run1@gmail.com,run2@gmail.com,run3@gmail.com,run4@gmail.com,run5@gmail.com和ran index.js,那么输出应该是:
run1@gmail.com
run2@gmail.com
run3@gmail.com
run4@gmail.com
run5@gmail.com
我希望这是有意义的,并事先感谢任何可以帮助的人!
您可以将index.js文件更改为下面的代码片段,还可以要求run.js文件访问登录函数
const taskFolder = './tasks/';
var run = require('./run')
var fs = require('fs')
async function getTasks(file) {
const fsPromise = require('fs').promises;
let data = await fs.readFileSync(`${taskFolder}${file}`);
let parsedData = JSON.parse(data);
email = parsedData.email;
run.login(email)
}
fs.readdir(taskFolder, (err, files) => {
files.forEach(getTasks);
});
修改run.js文件,导出可以在index.js文件中使用的登录函数
function login(email){
console.log(email);
}
module.exports ={
login
}