提问者:小点点

NodeJS:对于目录中的每个json文件,在另一个JS文件中读取文件并运行函数


有一段时间我一直想做点什么,但是没有运气,所以我发现自己在这里。

我基本上有两个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

我希望这是有意义的,并事先感谢任何可以帮助的人!


共1个答案

匿名用户

您可以将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
}