加载外部脚本时不匹配的匿名 define() 模块

Mismatched anonymous define() modules when loading external scripts

是的,我知道,这种问题已经被问过太多次了。 但是我有一个小细节想澄清一下。

正文中有一个脚本标签:

<script type="text/javascript" data-main="/js/app.87d28433.js" src="/js/external/requirejs/require.js"></script>

我们使用 requirejs api 加载 googleTagManager:

require(["//www.googletagmanager.com/gtm.js"], function () { ... })

但是,我们无法控制 GTM 加载的脚本及其加载方式。所以,最后,我们在正文中得到了很多加载脚本的脚本标签,比如 FingerprintJS,它声明了匿名定义模块。

是否有可能以任何方式绕过此行为并保持 requirejs alive?

再一次,我们无法控制 GTM 加载脚本的内容和方式。

只需为 require.js 个错误添加错误处理程序:

requirejs.onerror = function() {
    // do your error hadling stuff but don't throw exception!
}

(感谢@maestro)