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

问题描述

试图做一阵子,但是没有运气,所以我发现自己在这里。

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...