2016-02-23 83 views
-1

我需要公開更好的requireJS「加載超時模塊」錯誤的更好的錯誤細節,所以我可以真正調試以找出導致加載超時的原因。RequireJS模塊的加載超時:錯誤詳細信息

我無法將錯誤顯示在我的開發計算機上,但大約10%的日常訪問者在生產環境中遇到此錯誤(track.js正在用於收集這些錯誤以查看可見性)。

  • 錯誤是爲我的main.js文件(「load timeout for modules:main」) - 應用程序入口點引發的。我已經添加了errback回調以嘗試在此處記錄錯誤詳細信息,但是此錯誤似乎未觸及此回調,因此似乎所有main.js都需要這樣做。
  • 我已經爲requirejs.onError添加了一個全局覆蓋,我所得到的全部是模塊名(main.js)和一個超時錯誤代碼。
  • 我已經使用madge並驗證了沒有循環依賴關係。
  • 我已經使用r.js優化器優化了構建。
  • 我已經設置waitSeconds:0需要配置(通過我的理解應該完全禁用超時)

我怎樣才能找出正在被需要的地方向下行模塊實際導致超時?任何進一步的繼續將是非常有益的 - 我發現這非常難以追查。謝謝。

回答

0

詹姆斯伯克本人。 .....但是,如果您的「主要」需要很長時間才能加載,那麼該腳本將使用waitSeconds保存requirejs.config()調用,並通過data-main加載,然後將requirejs.config ()調用可能不會被及時調用,以便它有用。對於這個問題,你可以使用「requirejs作爲初始配置」來傳遞waitSeconds。

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

這完美地工作。

0

您可以在requireJS的配置中設置waitSeconds。默認情況下是7秒。我不知道你的問題的確切答案,但這可能是一個臨時解決方案。可能來自用戶的人有一個非常緩慢的互聯網。而且還不夠7秒。

您可以在Chrome devTools - >Network tab - >Throtling selector中測試。並選擇例如「2G常規450 kb/c」。我認爲你會看到這個錯誤。另外,當我使用CDN時,有時會出現此錯誤。

+0

我忽略提及,我已經將waitSeconds設置爲0了。網絡節流是一個好主意。我將它設置爲2G常規 - 有趣的是,我可以在網絡面板中看到加載的main.js腳本沒有錯誤,但我仍然收到模塊的加載超時:主錯誤。 – cre8ive

+0

您是否找到解決方案? @ cre8ive –

+0

是的,來自James Burke本人。 .....但是,如果您的「主要」需要花費很長時間才能加載該腳本很長時間,那麼該腳本將通過waitSeconds, 保存requirejs.config()調用,然後通過data-main加載它,然後requirejs.config()調用可能不會被及時調用,以便它有用。對於這個問題,你可以通過 傳遞waitSeconds使用「requirejs作爲初始配置」。 cre8ive