相关疑难解决方法(0)

如何在node.js中的"require"之后删除模块?

在我需要一个模块并执行以下操作后,请说:

var b = require('./b.js');
--- do something with b ---
Run Code Online (Sandbox Code Playgroud)

然后我想拿掉模块b(即清理缓存).我怎么能这样做?

原因是我想在不重新启动节点服务器的情况下动态加载/删除或更新模块.任何的想法?

-------更多--------基于删除require.cache的建议,它仍然不起作用...

what I did are few things:
1) delete require.cache[require.resolve('./b.js')];
2) loop for every require.cache's children and remove any child who is b.js
3) delete b
Run Code Online (Sandbox Code Playgroud)

但是,当我打电话给b时,它仍然存在!它仍然可以访问.除非我这样做:

b = {};
Run Code Online (Sandbox Code Playgroud)

不确定它是否是处理它的好方法.因为如果以后再次要求('./b.js')b.js被修改.它是否需要旧的缓存b.js(我试图删除)或新的?

-----------更多发现--------------

好.我做了更多的测试和玩代码..这是我发现的:

1) delete require.cache[]  is essential.  Only if it is deleted, 
 then the next time I load a new b.js will take effect.
2) looping through require.cache[] and delete any entry in the 
 children with …
Run Code Online (Sandbox Code Playgroud)

module require node.js

53
推荐指数
2
解决办法
3万
查看次数

标签 统计

module ×1

node.js ×1

require ×1