问题描述
试图做一阵子,但是没有运气,所以我发现自己在这里。
我基本上有2个Javascript文件( index.js 和 run.js ),以及一个名为 tasks 的文件夹,其中包含几个json名为run-1.json,run-2.json等的文件。
我要实现的是仅在终端中运行 index.js ,然后针对 tasks 文件夹中的每个json文件读取该json文件并抓取电子邮件,然后使用该电子邮件在 run.js 中运行名为登录的功能...
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);
}
所以基本上,如果我在task文件夹中有5个json文件,每个文件分别包含单独的电子邮件,分别是run1 @ gmail.com,run2 @ gmail.com,run3 @ gmail.com,run4 @ gmail.com,run5 @ gmail.com和运行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
}