问题描述
require()
函数的通常行为是使用缓存。因此,如果多个模块请求另一个模块,则所有模块都获得对表示所需导出的同一个对象的引用。但是,根据 docs 有一个例外:
当main.js
加载a.js
时,a.js
依次加载b.js
。在那时候,
b.js
尝试加载 a.js
。为了防止无限循环,
a.js
导出对象的未完成副本返回到 b.js
模块。 b.js
然后完成加载,并提供其导出对象
到 a.js
模块。
这种行为往往会导致不一致,因为模块从 require()
接收的内容取决于该模块本身的优先级(b.js
在 a.js
之后是必需的,因此前者得到a.js
export 的未完成副本,而后者直接引用了 b.js
export)。
这种方法的基本原理是什么?为什么无法将 a.js
导出的缓存版本返回到 b.js
(在 main.js
请求 a.js
时创建)?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)