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
答案 0 :(得分:-1)
我建议只使用专为此设计的NPM模块。请记住,您不应该在生产中使用它,而只能在开发阶段进行测试。试一试:https://www.npmjs.com/package/clear-require