RequireJS模块加载超时:错误详细信息

时间:2016-02-23 05:52:36

标签: javascript requirejs amd js-amd

我需要从requireJS“模块加载超时”错误中公开更好的错误细节,这样我才能实际调试以找出导致加载超时的原因。

我无法在我的开发计算机上显示错误,但是大约10%的每日访问者在生产环境中遇到此错误(track.js用于收集这些错误以提高可见性)。 / p>

  • 我的main.js文件引发了错误(“模块加载超时:main”) - 应用程序入口点。我已经添加了errback回调以尝试在此处记录错误详细信息,但是这个错误似乎没有达到这个回调所以好像所有main.js都要求很好。
  • 我为requirejs.onError添加了一个全局覆盖,我在这里得到的是模块名称(main.js)和错误代码timeout。
  • 我使用了madge并且已经验证没有循环依赖。
  • 我使用r.js优化器优化了构建。
  • 我在require config中设置了waitSeconds:0(根据我的理解,应该完全禁用超时)

如何找出线下某处所需的模块实际导致超时?任何进一步的事情都会非常有用 - 我发现这很难追查到。感谢。

2 个答案:

答案 0 :(得分:0)

您可以在requireJS的配置中设置waitSeconds。默认情况下是7秒。我不知道你问题的确切答案,但这可能是一个临时解决方案。可能来自用户的某人网络速度很慢。这还不够7秒。

您可以在Chrome devTools - >中进行测试Network tab - > Throtling selector。并选择例如“2G regular 450 kb / c”。我假设你会看到这个错误。此外,当我使用CDN时,有时会发生此错误。

答案 1 :(得分:0)

来自詹姆斯伯克本人。 .....但是如果困难是你的“main”需要很长时间才能加载,那么该脚本会使用waitSeconds保持requirejs.config()调用,并且它是通过data-main加载的,然后是requirejs.config ()呼叫可能无法及时调用以使其有用。对于该问题,您可以使用“requirejs as initial config”传递waitSeconds。

   <script>var requirejs = { waitSeconds: 0 };</script>
    <script src="require.js" data-main="main"></script>

这非常有效。