9

我目前(尝试)使用 Worklight Studio 5.0.6 和 Dojo (Mobile) 1.8.3 开发应用程序。我很难找到合适的调试方法。在服务器上等待 5-10 分钟构建部署过程后,Chrome 调试器中通常会出现如下错误:

在此处输入图像描述

我应该如何在我的来源中追踪这个错误?整个堆栈跟踪完全由 Dojo 代码组成,这些代码在 20 个抽象层之后生成绝对无用的错误消息。

说真的,你们在现实生活中是如何处理这个问题的?您使用什么方法在浏览器中调试 Dojo 驱动的应用程序?

斯派罗

4

4 回答 4

2

调试基于 dojo 的应用程序应该与调试任何 javascript 应用程序相同。

通常我会遵循以下步骤:

  1. 在代码中的某处添加 console.log():这很快,而且大部分时间就足够了。

  2. 在调试器中设置断点:如果第 1 步还不够,您可以根据错误信息在错误行之前设置断点,然后单步执行或单步执行。

  3. 注释掉最近的更改:对于一些很难找到错误行的错误,例如,在您的情况下解析错误,好的方法是注释掉您最近的更改,直到回到您的上一个工作版本。或者,返回上一个工作版本,然后一一添加代码。

  4. 创建一个简单的应用程序来重现错误:如果您的应用程序非常复杂并且您很难遵循上述方法,您可以尝试创建一个模仿您当前应用程序但逻辑简单的新应用程序并尝试重现错误。

  5. 经验总结:有些错误,比如在chrome和firefox下的array末尾有多余的',',会在IE上报一个无意义的错误信息。调试这类错误是非常困难的,你可以根据你的经验或做一个谷歌搜索。

于 2013-09-30T13:57:39.657 回答
2

对于 dojo.parse 错误,我发现在所有异常上暂停 Chrome 调试器很有用(屏幕截图上的紫色图标应该是蓝色的)。您通常会在引发的第一个异常中获得有关错误原因、正在解析的 DOM 节点的名称等的更多详细信息。

雷米。

于 2013-09-30T12:21:41.053 回答
2

您是否isDebug: true在 dojoConfig 中提供?另外,请尝试查看其他浏览器是否发生相同情况。

更新:我最近发现 Google Chrome 和 Dojo 调试存在问题,我认为这与文件的异步加载有关。正如您在@spyro 提供的屏幕截图中看到的那样,该ReferenceError对象是空白的(由于括号为空,您可以注意到这一点{})。如果您想解决这个问题,请重新打开 Google Chrome 的控制台(例如通过点击F12两次)。重新打开后,ReferenceError不应再为空,现在您可以使用它旁边的箭头展开该对象,并获得有关失败原因的更详细消息。

于 2013-12-24T10:36:56.170 回答
1

通常我在这种情况下所做的就是在错误回调中放置一个断点(在您的情况下为第 3398 行),然后查看错误变量(“e”)。

我不确定您对 Web Inspector 的熟悉程度,但是一旦您遇到断点,打开 Web Inspector 的“控制台”并检查错误属性“e.message”和“e.stack”(只需输入“e.消息”在控制台中)。此外,在开发过程中最好避免 Dojo 优化/缩小,这会大大提高您的调试能力。

底线是尝试在抛出错误之前放置断点。

于 2013-10-03T04:39:53.880 回答