gpt4 book ai didi

javascript - 如何解决 node.js 中的模块缓存警告(单例问题)?

转载 作者:行者123 更新时间:2023-11-30 17:26:34 25 4
gpt4 key购买 nike

关注另一个 question ,我知道我正面临一个 module caching caveat issue .显然,在我的项目中创建了同一个模块的多个实例。

我需要来自位于不同文件夹中的其他模块的模块:

var mm = require("./myModule.js");
...

var mm = require("../myDir/myModule.js");
...

var mm = require("../../MyDir/myModule.js");
...

我一直在尝试使用一个对象并通过导出它来创建 myModule 的唯一实例(单例):

var myModule = function() {

if (!(this instanceof myModule)) { return new myModule(); }

...

};

...

module.exports = new myModule();

然而,它并没有解决问题。在 node.js 中声明单例的正确方法是什么?以及如何在其他模块中检索实例?

最佳答案

这是一个 Windows 问题:Windows 中的文件路径不区分大小写,因此 ./File.txt./file.txt 指的是同一个文件。问题是,该 Node 不知道这一点,并使用已解析的文件路径作为缓存键,因此可以使用不同的大小写多次加载同一模块。

有关该问题和讨论的更多信息:https://github.com/joyent/node/issues/6000

解决方案(某种):不要在 Node 项目中的文件和目录名称中使用大写

关于javascript - 如何解决 node.js 中的模块缓存警告(单例问题)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24126871/

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