有时确实需要单例,并且Node的缓存系统不可靠。甚至官方文档也提到了它:
根据已解析的文件名缓存模块。由于模块可能会根据调用模块的位置(从node_modules文件夹加载)而解析为不同的文件名,因此,不能保证require('foo')始终返回完全相同的对象(如果它将解析为不同的文件)
来源:https://nodejs.org/api/modules.html#modules_module_caching_caveats
如何在不依赖Node缓存的情况下创建Singleton?甚至有可能吗?
答案 0 :(得分:1)
您误会了文档。这意味着如果您的文件结构是:
/foo.js
/bar.js
/sub/foo.js
/sub/bar.js
然后,require("foo")
文件中的bar.js
将导入不同的模块(/foo.js
和/sub/foo.js
)。
NodeJS的缓存系统 是可靠的。