模块的 RequireJS 加载超时:错误详细信息
RequireJS Load timeout for modules: error detail
我需要从 requireJS "load timeout for modules" 错误中公开更好的错误细节,这样我才能实际调试以找出导致加载超时的原因。
我无法让错误出现在我的开发机器上,但大约 10% 的日常访问者在生产环境中遇到此错误(track.js 正在用于收集这些错误能见度)。
- 我的 main.js 文件 ("load timeout for modules: main") - 应用程序入口点出现错误。我添加了 errback 回调以尝试在此处记录错误详细信息,但此错误似乎并未触发此回调,因此似乎 main.js 所需要的一切都很好。
- 我已经为 requirejs.onError 添加了全局覆盖,我在这里得到的只是模块名称 (main.js) 和超时错误代码。
- 我已经使用了 madge 并验证了没有循环依赖。
- 我已经使用 r.js 优化器优化了构建。
- 我在 require 配置中设置了 waitSeconds: 0(根据我的理解应该完全禁用超时)
我如何才能找出实际导致超时的某个地方所需的模块?任何进一步的事情都会非常有帮助 - 我发现这非常难以追踪。谢谢。
你可以在requireJS的配置中设置waitSeconds。默认为 7 秒。我不知道您问题的确切答案,但这可能是一个临时解决方案。可能来自用户的某个人的互联网速度非常慢。而且还不够7秒。
您可以在 Chrome devTools
-> Network tab
-> Throtling selector
中进行测试。和 select 例如“2G 常规 450 kb/c”。我假设您会看到此错误。另外,我用CDN的时候有时会出现这个错误。
来自 James Burke 本人。 .....但是,如果困难在于您的 "main" 需要很长时间才能加载,那么该脚本将使用 waitSeconds 保持 requirejs.config() 调用,并且它是通过数据主加载的,然后requirejs.config() 调用可能无法及时调用以发挥作用。对于该问题,您可以使用 "requirejs as initial config" 传递 waitSeconds。
<script>var requirejs = { waitSeconds: 0 };</script>
<script src="require.js" data-main="main"></script>
这非常有效。
我需要从 requireJS "load timeout for modules" 错误中公开更好的错误细节,这样我才能实际调试以找出导致加载超时的原因。
我无法让错误出现在我的开发机器上,但大约 10% 的日常访问者在生产环境中遇到此错误(track.js 正在用于收集这些错误能见度)。
- 我的 main.js 文件 ("load timeout for modules: main") - 应用程序入口点出现错误。我添加了 errback 回调以尝试在此处记录错误详细信息,但此错误似乎并未触发此回调,因此似乎 main.js 所需要的一切都很好。
- 我已经为 requirejs.onError 添加了全局覆盖,我在这里得到的只是模块名称 (main.js) 和超时错误代码。
- 我已经使用了 madge 并验证了没有循环依赖。
- 我已经使用 r.js 优化器优化了构建。
- 我在 require 配置中设置了 waitSeconds: 0(根据我的理解应该完全禁用超时)
我如何才能找出实际导致超时的某个地方所需的模块?任何进一步的事情都会非常有帮助 - 我发现这非常难以追踪。谢谢。
你可以在requireJS的配置中设置waitSeconds。默认为 7 秒。我不知道您问题的确切答案,但这可能是一个临时解决方案。可能来自用户的某个人的互联网速度非常慢。而且还不够7秒。
您可以在 Chrome devTools
-> Network tab
-> Throtling selector
中进行测试。和 select 例如“2G 常规 450 kb/c”。我假设您会看到此错误。另外,我用CDN的时候有时会出现这个错误。
来自 James Burke 本人。 .....但是,如果困难在于您的 "main" 需要很长时间才能加载,那么该脚本将使用 waitSeconds 保持 requirejs.config() 调用,并且它是通过数据主加载的,然后requirejs.config() 调用可能无法及时调用以发挥作用。对于该问题,您可以使用 "requirejs as initial config" 传递 waitSeconds。
<script>var requirejs = { waitSeconds: 0 };</script>
<script src="require.js" data-main="main"></script>
这非常有效。