一尘不染

卸载代码/模块

node.js

我很好奇在使用模块后是否有任何好的方法可以卸载模块。在某些情况下,我需要使用引入大量代码的模块,但是很少使用它们(例如作为管理工具),但是我犹豫使用它们,因为在此之后它们可能只会浪费内存,这可能会更好在其他地方使用。是否有任何方法可以卸载它们,无论是显式卸载还是在一段时间不使用它们时允许系统卸载它们?


阅读 244

收藏
2020-07-07

共1个答案

一尘不染

是的,可以直接访问模块缓存:

var name = require.resolve('moduleName');
delete require.cache[name];

请注意,如果您的代码中包含对您想摆脱的这些模块公开的内容的引用,则不会对其进行清理。

(顺便说一句:在表面之下,require.resolve和分别是核心模块加载程序(即)的require.cache代理,Module._resolveFilenameModule._cache分别Module作为代理require('module')。)

2020-07-07