【问题标题】:How to debug Dojo in browser?如何在浏览器中调试 Dojo?
【发布时间】:2013-10-06 03:12:20
【问题描述】:

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

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

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

斯派罗

【问题讨论】:

  • 您是否在dojoConfig 中提供了isDebug: true?另外,请尝试查看其他浏览器是否发生相同情况。我不知道为什么,但有时其他浏览器会为我提供更多信息。

标签: debugging dojo ibm-mobilefirst dojox.mobile


【解决方案1】:

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

雷米。

【讨论】:

    【解决方案2】:

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

    通常我会按照以下步骤进行:

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

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

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

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

    5. 经验总结 : 一些错误,例如在 chrome 和 firefox 上工作的数组末尾多余的 ',' 会在 IE 上报告一个无意义的错误信息。调试这类错误非常困难,您可以根据自己的经验或谷歌搜索。

    【讨论】:

    • 感谢您的回答,但所有这一切都不是 Dojo 所特有的,因为它广泛使用回调和异步 AMD 代码,您根本不知道实际导致错误的原因(因为您的“类" 不是堆栈跟踪的一部分)。由于缺少所有要求,甚至无法从 javascript 控制台操作您的页面。
    【解决方案3】:

    您是否在 dojoConfig 中提供了isDebug: true?另外,试试看其他浏览器是否也出现同样的情况。

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-15
        • 2023-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-16
        • 2014-04-14
        • 1970-01-01
        相关资源
        最近更新 更多