调试 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的主要内容,如果未能解决你的问题,请参考以下文章