调试 Backbone.js

Posted

技术标签:

【中文标题】调试 Backbone.js【英文标题】:Debugging Backbone.js 【发布时间】:2013-10-05 22:43:44 【问题描述】:

我正在寻找一些调试backbone.js 的指导。我正在关注 Daily.js 主干教程,并在第 9 周后遇到了错误 (http://dailyjs.com/2013/01/24/backbone-tutorial-9/)。

这是我的错误

[22:47:29.339]“调用请求执行” [22:47:29.423] GET http://localhost:8080/img/glyphicons-halflings.png [HTTP/1.1 304 未修改 1ms] [22:47:29.424] POST https://content.googleapis.com/rpc?key=xxxxxxx [HTTP/1.1 200 OK 168ms] [22:47:29.546] ReferenceError: id is not defined @ http://localhost:8080/js/lib/underscore.js:1209 [22:47:29.543]“看涨期权成功”

这是带有相应控制台日志调用的代码:

  Backbone.gapiRequest = 函数(请求、方法、模型、选项)
    变量结果;
    console.log("调用请求执行")
    request.execute(函数(res)
      如果(res.error)
        if (options.error) options.error(res);
       else if (options.success) 
        如果(res.items)
          结果 = res.items;
         别的 
          结果=水库;
        
        console.log("调用选项成功");
        options.success(模型,结果,请求);
      
      console.log("gapiRequest")
    );
  ;

事情正在让我眼前一亮:

    为什么没有显示最后一个日志(gapiRequest)。 为什么两个控制台日志之间会出现错误,即使代码中没有任何内容涉及 id 或据我所知,任何外部库。

如果有人知道可能发生的事情会很棒,那么任何有关如何调试它的信息也会非常好。当前的网络浏览器可以生成堆栈跟踪吗?

TIA, 马特

【问题讨论】:

【参考方案1】:

    如果您查看时间戳,您的脚本已崩溃:

    [22:47:29.546] ReferenceError: id is not defined @ http://localhost:8080/js/lib/underscore.js:1209
    [22:47:29.543] "calling options success"
    

    您会看到"calling options success" 发生在ReferenceError 之前。这意味着您的客户收到了结果,但您的脚本在渲染模板时崩溃了(我猜),可能是因为:

    根据发生异常的库 (underscore.js) 判断,您可能在下划线模板的某处引用了 id。在模板文件中查找 <%= id%><% id%> 之类的内容。

【讨论】:

这让我直截了当,所以我将其标记为答案。我不知道为什么的细节,但看起来模型没有被填充。所以 id 是有效的,只是其中没有任何内容......一半的解决方案是恢复对 options.success 调用的更改。仍然要找出原因。

以上是关于调试 Backbone.js的主要内容,如果未能解决你的问题,请参考以下文章

【调试】Android WebView调试

php异步调试和线上调试网站程序

软件调试的方方面面

为啥我要在不调试的情况下开始调试构建?

内核调试之双机调试环境的搭建

机械设备调试的“调试”英文用啥单词