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

时间:2015-02-03 19:06:33

标签: javascript requirejs amd

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

我们在正文中有一个脚本标记:

<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 活着

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

1 个答案:

答案 0 :(得分:2)

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

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

(感谢@maestro)