假设我需要一个模块并执行以下操作:
var b = require('./b.js');
--- do something with b ---
然后,我要拿走模块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
但是,当我呼叫b时,它仍然存在!它仍然可以访问。除非我这样做:
b = {};
不知道这是否是处理该问题的好方法。因为如果以后再修改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 the full filename of b.js doesn't take any effect. i.e.
u can delete or leave it. However, I'm unsure if there is any side
effect. I think it is a good idea to keep it clean and delete it if
there is no performance impact.
3) of course, assign b={} doesn't really necessary, but i think it is
useful to also keep it clean.
您可以使用此命令在缓存中删除其条目:
delete require.cache[require.resolve('./b.js')]
require.resolve()
将找出的完整路径./b.js
,该路径用作缓存键。
有人知道我为什么得到这种阵列吗?我只想要下面这部分。我需要删除这些mysql连接和其他不需要的数组。 下面的代码显示了我如何获得该数组。当I
在任何地方都找不到关于这个的文章。我基本上希望从程序中捕获“找不到模块”错误,并可以选择要求安装它,但即使使用try/catch语句,我似乎也无法捕获任何错误。这可能吗?我哪儿都没见过。 例如: 我想这可以通过一个独立的.js启动文件来完成,而无需任何第三方的要求,只需使用检查,然后从子进程运行,然后与另一个子进程一起运行。但感觉在单个app.js文件中执行此操作会更容易
我在Android Studio上做一个项目,在那里我使用了一些库。但是其中的一个库/模块没有任何用处。现在我要移除/删除那个特定的模块。但是当我右键点击那个模块时,没有删除选项显示。然后我转到C驱动器中的Android Project文件夹,删除了该模块的文件夹。但是这个空模块仍然在android Studio中显示。怎么把它完全去掉??
问题内容: 我使用node.js和socket.io。 我的应用程序在端口3000上运行。该应用程序从以下网址启动: **mydomain.com :3000/ ** 我想从 **mydomain.com** 运行该应用程序-我想从url中删除端口。 在哪里以及如何设置此设置? 问题答案: 查找您的呼叫并将端口从更改为。不要忘记,您必须运行具有该功能的程序(有关详细信息,请参阅),以便绑定到Lin
我卸载了以前版本的Node.js(0.8.11),从Node.js网站下载了最新的0.10.24并安装了它。但是,在运行之后,它仍然表明我运行的是V0.8.11。很明显,卸载过程中留下了一些东西,这导致我在试图通过NPM添加模块时出现了各种各样的错误。我在OSX和Linux上见过解决方案,但在Windows上找不到任何解决方案。我运行的是Windows 7 64位。
问题内容: 最近,我碰上了这篇文章如何写在Node.js的一个单 我知道以下 状态的文档: 第一次加载模块后将对其进行缓存。多次调用可能不会导致模块代码多次执行。 因此,似乎每个需要的模块都可以轻松地用作单例,而无需单例样板代码。 题: 上面的文章是否提供了有关创建单例的解决方案? 问题答案: 这基本上与nodejs缓存有关。干净利落。 https://nodejs.org/api/modules