使模块缓存无效

在开发过程中,你可能会发现在同一模块上多次使用 require() 始终返回相同的模块,即使你对该文件进行了更改也是如此。这是因为模块在第一次加载时被缓存,并且任何后续模块加载都将从缓存加载。

要解决此问题,你必须知道缓存中的条目。例如,如果你加载了一个模块:

var a = require('./a');

然后,你可以删除缓存条目:

var rpath = require.resolve('./a.js');
delete require.cache[rpath];

然后再次要求模块:

var a = require('./a');

请注意,这不建议在生产中使用,因为 delete 将仅删除对已加载模块的引用,而不是已加载的数据本身。该模块不是垃圾回收,因此不正确使用此功能可能会导致内存泄漏。