2013-09-30 71 views
8

我目前(嘗試)使用Worklight Studio 5.0.6和Dojo(Mobile)1.8.3開發應用程序。我很難找到一個合適的調試方法。在服務器上等待5-10分鐘生成一個部署過程後,一個錯誤通常看起來像這樣在Chrome調試器:如何在瀏覽器中調試Dojo?

enter image description here

我怎麼追蹤到這個錯誤在我的源?整個堆棧跟蹤由Dojo代碼完全完全組成,它在20個抽象層之後生成絕對無用的錯誤消息。

說真的,你們在現實生活中如何處理這件事?你使用什麼方法在瀏覽器中調試Dojo驅動的應用程序?

SPYRO

+1

你在'dojoConfig'中提供了'isDebug:true'嗎?另外,嘗試查看其他瀏覽器是否也發生相同情況。我不知道爲什麼,但有時其他瀏覽器爲我提供了更多信息。 – g00glen00b

回答

2

對於dojo.parse錯誤,我發現它有用暫停對所有異常的Chrome調試器(在你的屏幕截圖中的紫色圖標,應爲藍色)。您通常會在引發第一個異常時獲得有關錯誤原因,正在解析的DOM節點名稱等的更多詳細信息。

Rémi。

2

調試基於dojo的應用程序應該與調試任何javascript應用程序相同。

通常我會請按照下列步驟操作:

  1. 附加的console.log()的代碼的地方:這是快,大部分時間,這是不夠的。

  2. 設置斷點調試器:如果第1步是不夠的,你可以基於錯誤信息之前錯誤行設置斷點,然後一步或走出。

  3. 評論了最近的變化:對於一些錯誤,這是很難找到的錯誤行,例如,你的情況分析錯誤,好辦法是註釋掉你最近改變了逐一直到回到你的最後工作版本。或者,返回到您的上一個工作版本,然後逐個添加代碼。

  4. 創建一個簡單的應用程序來重現錯誤:如果您的應用程序是非常複雜的,這是很難爲你按照上面的方法,你可以嘗試創建一個新的應用程序,它模仿你當前的應用程序,但用簡單的邏輯並嘗試重現錯誤。

  5. 根據經驗:在數組的結尾,它在Chrome和Firefox的作​​品了一些錯誤,例如,額外的「」,將報告在IE無意義的錯誤信息。調試這些類型的錯誤是非常困難的,你可以根據你的經驗或做一個谷歌搜索。

+1

感謝您的回答,但所有這些對於Dojo來說都不是特定的,因爲它廣泛使用回調和異步AMD代碼,您只是不知道實際導致錯誤的原因(因爲您的「類」不是堆棧的一部分跟蹤)。由於所有缺少的要求,甚至無法從JavaScript控制檯操作頁面。 – spyro

1

通常我在這樣的情況下,做的是把錯誤回調中的斷點(線3398在您的情況),然後看看錯誤變量(「E」)。

我不確定您對Web Inspector有多熟悉,但是一旦您點擊斷點,打開Web Inspector的「控制檯」並檢查錯誤屬性「e.message」和「e。堆棧「(只需在控制檯中鍵入」e.message「) 此外,在開發過程中最好避免Dojo優化/縮小,這會大大提高您的調試能力。

底線是嘗試放置?錯誤拋出之前斷點

2

你在你的dojoConfig提供isDebug: true另外,試一試,看是否相同,則會發生在其他瀏覽器

更新:我最近發現有與谷歌的問題Chrome和Dojo的調試,我認爲它與異步加載文件有關。正如你在上面看到的提供了@spyro的屏幕截圖,ReferenceError對象爲空白(由於空括號{},您可以注意到)。如果您想解決該問題,請重新打開Goog​​le Chrome的控制檯(例如,通過點擊F12兩次)。重新打開後,ReferenceError不應再空,現在可以使用其旁邊的箭頭展開該對象,並獲取關於失敗的更詳細信息。