立即调用的函数表达式不会在第二个要求时执行

Immediately invoked function expression isn't executed on second require

下面是一个示例代码,以使其更加清晰。

这是我的模块:

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

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

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

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

我怎样才能每次都运行?

来自 nodejs 文档:

Multiple calls to require('foo') may not cause the module code to be executed multiple times. This is an important feature. With it, "partially done" objects can be returned, thus allowing transitive dependencies to be loaded even when they would cause cycles.

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

If you want to have a module execute code multiple times, then export a function, and call that function.

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

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

尽管导出函数并在需要时调用它可能会更好,而不是只导出结果。