Javascript 当commonjs模块和es6模块之间存在循环依赖时,为什么会发生引用错误?
我正在读这篇文章,它举例说明了两种情况: 案例1: A: B 案例2: A: B: 对于案例1,它说 解析“A”的代码并创建模块记录时,会检测到“B”不是ESM,因此验证日志是否由“B”导出的验证步骤将挂起 对于案例2,它说 这种类型的循环在很大程度上不可能实现,因为当ESM“B”被链接和评估时,符号“a”尚未由CommonJS模块“a”定义和导出。这种情况很可能被视为参考错误 所以我的问题是:为什么在案例1中“验证步骤”将挂起,而不是案例2??对我来说,这两个都是引用commonjs模块中命名导出的ES模块,为什么case1可以放入挂起,而case2将抛出referenceerrorJavascript 当commonjs模块和es6模块之间存在循环依赖时,为什么会发生引用错误?,javascript,ecmascript-6,commonjs,es6-modules,Javascript,Ecmascript 6,Commonjs,Es6 Modules,我正在读这篇文章,它举例说明了两种情况: 案例1: A: B 案例2: A: B: 对于案例1,它说 解析“A”的代码并创建模块记录时,会检测到“B”不是ESM,因此验证日志是否由“B”导出的验证步骤将挂起 对于案例2,它说 这种类型的循环在很大程度上不可能实现,因为当ESM“B”被链接和评估时,符号“a”尚未由CommonJS模块“a”定义和导出。这种情况很可能被视为参考错误 所以我的问题是:为什么在案例1中“验证步骤”将挂起,而不是案例2??对我来说,这两个都是引用commonjs模块中
import {log} from "B"
export default function() {
log('hello world')
}
module.exports.log = function(msg) {
console.log(msg);
}
const b = require('B')
exports.b = b.foo()
exports.a = 1
import {a} from "A"
export const foo () => a