以下示例代码使其更加清晰。
这是我的模块:
module.exports = ((parameter) => {
console.log(parameter);
})('some value');
mymodule
实际上是主服务器文件,因此必须立即执行。
我在测试套件中的单元测试需要我的模块,但是第一次执行立即调用的函数表达式。
require('./mymodule');
require('./mymodule');
我怎样才能每次运行?
答案 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');
虽然导出函数并在需要时调用它,而不是仅导出结果,但您可能会感觉更好。