gpt4 book ai didi

javascript - Node.js 即时更改导出

转载 作者:搜寻专家 更新时间:2023-10-31 23:13:10 24 4
gpt4 key购买 nike

在函数中更改 exports.X 似乎不起作用...

我希望能够从文件加载设置并在 Node.js 中访问它们。我目前有这个,但是,连接到我的 Node 应用程序的客户端可以编辑设置文件中的内容。不幸的是,就目前而言,必须重新启动 Node 应用程序才能使更改生效。有什么方法可以即时重新加载 module.exports 吗?

编辑:

设置文件实际上是一个 JSON 字符串。

我的设置模块几乎在每个文件中都是“必需的”,而且有很多文件……所以按文件重新加载它是不可能的。但是,我确实知道何时有人更改了设置。

最佳答案

如果您使用require 来加载设置并且只从一个模块引用设置,那么按照以下行做一些事情:

delete require.cache[require.resolve(filename)];

将为您工作。

另一方面,如果多个模块将引用这些设置,则该方法可能会变得有点笨拙,并使您面临无法预料的错误。例如,如果任何模块持有对所需设置文件的引用,它们每个都需要以某种方式了解设置已更改并更新它们的引用。

为了缓解(不是完全解决)缓存问题,您build设置界面,以便它的用户必须通过函数访问设置对象和/或要求通过函数访问属性。即使使用此模型,某些人仍可能会决定缓存设置,从而在以后导致不明显的故障。

对设置对象使用单个 getter 的最简单方法看起来像这样:

var settings = require('./settings.json');

// ... watch for changes and reload by invalidating node's cache

module.exports = function() { return settings; }

用法:

var settings = require('./path/to/settings');

settings().foo;

有几个库可以做设置。根据您的需要,我偏向nconf .

关于javascript - Node.js 即时更改导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24579298/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com