微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查esm模块的导入顺序?

如何解决如何检查esm模块的导入顺序?

我们可以猴子修补esm加载器以向我们提供有关哪个模块在哪个时间点从哪个文件加载的信息吗? 有没有可以看的依赖树?

据我所知,ES6 +模块首先以递归方式解决导入问题,然后运行代码

main.ts

console.log("0")
import "./foo.js"
console.log("1");
import "./bar.js"

foo.ts

console.log("foo");

bar.ts

console.log("bar");
import "./baz.js"

baz.ts

console.log("baz");

输出

foo
baz
bar
0
1

上下文: 将项目从Commonjs转换为ESNEXT后,由于不同的加载程序导入代码的方式不同,代码的执行顺序变得一团糟。 目前,我尝试将Winston记录器添加到它的全局容器中,但是访问发生在初始化之前。我不知道为什么在初始化代码之前就解决了这个模块。

如何确定为什么“ permissionManipulation.ts”文件在我的“ initializeDependencies.ts”模块之前得到评估,即使导入顺序另有规定? 调试器的堆栈跟踪实际上没有任何帮助

enter image description here

编辑:根据此帖子下的评论https://stackoverflow.com/a/35552247/3244464,导入顺序取决于实现,因此不应依赖于导入顺序。并不是真正解决我的问题的方法,但至少是一个起点。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。