如何重新加载节点模块?

时间:2018-01-09 20:23:35

标签: node.js caching node-modules

nodejs似乎在第一次加载时缓存模块。因此,尽管重新加载模块,但不会反映对模块的任何修改,因为随后只需从缓存中选择它。

然而,尽管使用以下方法删除缓存:

delete require.cache[require.resolve(module)]

它不再在缓存中显示模块,但仍未反映对模块的修改。

据我所知,删除require.cache只是删除对象的链接而不是实际的对象(如果是循环依赖),这可能会导致问题?

我甚至删除了整个require.cache对象,但无济于事。

编辑:尝试手动gc,仍然无法正常工作

node --expose-gc
m = require('module')
// modify 'module'
delete require.cache
delete m
global.gc()
m = require('module')
//Changes not reflected

1 个答案:

答案 0 :(得分:-1)

我建议只使用专为此设计的NPM模块。请记住,您不应该在生产中使用它,而只能在开发阶段进行测试。试一试:https://www.npmjs.com/package/clear-require