在第二次需要

时间:2016-03-19 14:05:12

标签: node.js iife

以下示例代码使其更加清晰。

这是我的模块:

module.exports = ((parameter) => {
  console.log(parameter);
})('some value');

mymodule实际上是主服务器文件,因此必须立即执行。

我在测试套件中的单元测试需要我的模块,但是第一次执行立即调用的函数表达式。

require('./mymodule');
require('./mymodule');

我怎样才能每次运行?

2 个答案:

答案 0 :(得分:1)

来自nodejs docs:

  

多次调用require(' foo')可能不会导致模块代码   多次执行。这是一个重要的特征。用它,   "部分完成"可以返回对象,从而允许传递   即使它们会导致循环,也要加载依赖项。

https://nodejs.org/docs/v0.4.12/api/modules.html#caching

  

如果你想让模块多次执行代码,那么导出一个函数,并调用该函数。

答案 1 :(得分:1)

您可以使Node维护的缓存无效:

require('./mymodule');
delete require.cache[require.resolve('./mymodule')]
require('./mymodule');

虽然导出函数并在需要时调用它,而不是仅导出结果,但您可能会感觉更好。