如何禁用通过Node.js导入的模块缓存要求?

时间:2019-05-13 12:03:38

标签: javascript node.js

我有一个对象数组,我循环检查每个项目,此检查是由一个称为“检查”的单独模块完成的,我使用require将这个模块从循环中导入,但是问题是,如果我在该模块中进行更改,它将更改为实例化它的所有迭代。我读到,使用require()节点导入会缓存该模块,因此我所做的任何更改都会对每个人都更改,而这不是我想要的。

每次迭代我都需要一个模块副本,这可能吗?无论如何我都尝试过,我在循环外创建了一个对象,并在对象内声明了它,但是它不起作用。

这是我的尝试:

main.js

const check = require('./modules/check');
const api = require('../wrappers/api');

stores.forEach(async function(store) {
    let sales = [];
    await api.getSales(store.id).then((response) => {
      sales = response.result;
    })
    .catch((error) => {
      logger.error(error);
    });

    let checkModules = {};

    for(const sale of sales){
         // Check
         checkModules[sale.id] = Object.assign({}, check);
         await checkModules[sale.id].run(sale);
         delete checkModules[sale.id];
    }
});

也许问题出在异步的forEach上,它运行并行存储并最终导致模块错误,如果我一次执行一个可以工作,但是我需要并行运行forEach,因为此循环需要一段时间完成。

0 个答案:

没有答案