使模块缓存无效
在开发过程中,你可能会发现在同一模块上多次使用 require()
始终返回相同的模块,即使你对该文件进行了更改也是如此。这是因为模块在第一次加载时被缓存,并且任何后续模块加载都将从缓存加载。
要解决此问题,你必须知道缓存中的条目。例如,如果你加载了一个模块:
var a = require('./a');
然后,你可以删除缓存条目:
var rpath = require.resolve('./a.js');
delete require.cache[rpath];
然后再次要求模块:
var a = require('./a');
请注意,这不建议在生产中使用,因为 delete
将仅删除对已加载模块的引用,而不是已加载的数据本身。该模块不是垃圾回收,因此不正确使用此功能可能会导致内存泄漏。