2013-12-08 88 views
1

我做了一個複雜的應用程序,捕獲流星上的html2canvas.js截圖。 除了以下條件,它運作良好。 1.部署到沒有--debug選項的服務器。並且, 2.客戶端是iOS Safari。流星中部署的代碼和調試代碼之間有什麼區別?

(如果您通過html2canvas.js一個簡單的捕獲應用程序,它可以很好地用於所有條件,所以我說:「一個複雜的應用程序」,意味着該應用程序包括其他庫。)

什麼是必要的沒有--debug選項和--debug選項之間的區別? (它可以被連接或分開,或者被簡化或不被,但它們是等同的。) 顯然這種現象表明它們不是等價的。 通過加入iOS上的文件,代碼是否存在干擾?

如何有效調試此問題?

[UPDATE] 一旦我使用--debug選項進行部署,並在不使用--debug的情況下重新部署,問題就會消失。 它可能與iOS上的瀏覽器緩存策略有關。

+0

流星在您的代碼上運行縮小器以供生產使用。 Minifiers有時會重命名變量,如果外部庫依賴某種動態反射 - 它們可能會中斷。這個問題仍然是開放的,也許應該有辦法指向某些圖書館,並告訴流星「不要縮小這些東西,它只是打破」 – imslavko

+0

謝謝你的有趣的評論。在審查代碼時我會關心它。 我仍然不知道我的問題與它不同。它只發生在iOS上,儘管看起來沒有OS特定的代碼。 – Yuji

+0

這是不是第一次minifiers不好打,肯定應該有一個解決這個 – imslavko

回答

2

在調試模式下,您的代碼不會縮小並打包成單個文件。所以有兩種模式debugproduction。當您使用meteor deploy而不使用--debug時,您的代碼已針對速度進行了大量優化。你會注意到這一點與你的應用程序加載到你的手機上的時間。

如果該應用僅適用於--debug選項,則表示您在應用中出現某種javascript錯誤。

縮小應用程序時,所有文件都連接成一個文件。如果代碼中有一處錯誤,其餘代碼將不會執行。在--debug模式下,錯誤仍然存​​在,但由於文件是分離的,所以其他文件不受錯誤影響。

您應該在chrome/safari中使用javascript控制檯來查找錯誤並在部署應用程序之前對其進行修復。如果你使用Mac,最簡單的方法就是使用Cmd + Alt + J.

通常在流星中,這是由於您在下載之前訪問集合引起的。就像試圖獲得doc.datedoc仍然未定義,所以它會引發空引用異常。

+0

謝謝你的答案。 – Yuji

相關問題