仅在 iFrame 中偶尔出现错误:Main.js 解释为 amd 模块格式,但调用 System.register

Sporadically get error only in iFrame: Main.js Interpreted as amd module format, but called System.register

只有在使用 SystemJS v 0.19.41 加载已编译的 ES6 Javascript 类 时在 iframe 中加载时,我才会在控制台中看到以下错误。

system.src.js:3054 Uncaught Error: Module https://d1jbmqjs327xbn.cloudfront.net/_ra/spaces-developer.pxand/assets/js/framework/builder/builder-client.js interpreted as amd module format, but called System.register.
at a. (system.src.js:3054)
at a. (system.src.js:3773)
at a.reduceRegister_ (system.src.js:4268)
at HTMLScriptElement.m (system.src.js:2851)

这似乎与几年前关闭的问题相同,但对于这种情况,它只发生在 iframe 中。

https://github.com/systemjs/systemjs/issues/970

它在 Safari 中一直发生,但在 Chrome 中偶尔发生。这个问题上周才开始出现,没有代码更改,所以我不知道可能出了什么问题。发生此错误时,它只是停止执行非常有问题的 Javascript。

有人知道这个问题的根本原因是什么吗?

以防万一这对任何人都有帮助。我发现问题出在 jQuery UI 上,因为它默认使用 AMD。我不得不恢复到旧版本来解决这个问题。我对 Chrome 中的零星行为的唯一解释是 Chrome 不像 Safari 那样始终以相同的速度执行脚本。但是,这仍然不能解释为什么我突然开始看到这个问题而没有任何变化。

因此,如果您遇到这种情况,请寻找一个默认使用 AMD 加载依赖项的库,然后使用 import 加载它们,或者如果您别无选择,请尝试重新排列导入顺序并移动导致问题的原因。就我而言,这是不可能的,这就是为什么我必须使用旧版本的 jQuery UI.

至于为什么只有在 iframe 中才会出现。好吧,这仍然是个谜。我只能认为这是因为iframe中的内容是如何被浏览器加载的。我很想听听专家对此的意见。