referenceerror:在初始化循环依赖项之前无法访问

6ojccjat  于 2021-09-23  发布在  Java
关注(0)|答案(1)|浏览(306)

在下面的简单示例中,我遇到以下错误:
referenceerror:初始化之前无法访问“共享”
但是,如果我将导出默认值2更改为函数,它将工作。为什么会有这种行为?
index.js

import a from "./testA.js";
export default 2;

testa.js

import shared from "./index.js";

console.log(shared);

export default function () {}
oiopk7p5

oiopk7p51#

我用webpack(代码传输到es5)和chrome中的本机模块检查了这一点。通过传输代码,它只需记录 undefined . 无论导出是函数还是数字,它只会给出本机模块的错误。
这是因为,正如错误所暗示的那样 default 出口 index.js 在您尝试初始化时未初始化 console.log 信息技术
这相当于做如下事情:

console.log(a);
const a = 2;
``` `shared` 将在第二行输入时初始化 `index.js` 被执行,但是 `index.js` 在第1行停止,并等待执行 `testA.js` 完成了。
当编译到es5时,会出现另一个问题,因为部分完成的模块会被传递给另一个模块,所以在那个时候没有初始化的模块最终都会变成 `undefined` .

相关问题