我从Chrome Development Tool: [VM] file from javascript了解到,Google Chrome中[VM]
文件中执行的代码是与文件没有直接关联的代码。
一位客户最近报告说,地理编码功能已不再在其网站上运行。它是一个Joomla网站,所以它使用MooTools。地理编码是通过Google Maps API v3完成的。我几年前写过代码,最近才开始表演。我已经确定了代码中错误发生的确切位置,但堆栈跟踪的结尾最终会出现在一个被混淆的[VM]
文件中。
我的代码中出现错误的地方:
var pf_map = {
geocoder: new google.maps.Geocoder(),
geocode: function() {
var address = '123 Fake St, Nowhere, USA'; // actually a valid address
// The error occurs somewhere between here
console.log('This message makes it to the console');
pf_map.geocoder.geocode({ 'address': address }, function(results, status) {
// and here
console.log('This message does not make it to the console');
});
}
}
控制台中报告的错误是:
Uncaught TypeError: Cannot read property 'charAt' of undefined
堆栈跟踪如下所示:
在我看来MooTools引起了问题,但我不知道如何调试它。点击堆栈顶部我会得到类似的结果:
非常愉快。我已经逐步完成了脚本,这就是抛出错误时范围的样子:
好吧,我可以看到b
确实是undefined
,但我已经知道了。
我很确定Google地理编码器工作得很好。令我沮丧的是,我反复点击“Map my Address”按钮足以引起一个单独的Geocode was not successful for the following reason: OVER_QUERY_LIMIT
错误,我基于这个错误。
在这种情况下你会接下来尝试什么?
答案 0 :(得分:0)
我会从代码按预期工作的最后一点看代码和环境中的变化增量。
是否有任何包含的库更改了修订版?它们仍然是从相同的来源下载的吗?是否有新添加的JS代码可能会影响现有脚本?
如果这不起作用,我会创建一个只包含可疑基本元素的虚拟页面,并查看错误是否被重现。通过node-debug将此虚拟代码作为节点应用程序运行,并使用Chrome开发工具逐步执行代码也可能会有所帮助。
祝你好运,让我们知道你是如何解决这个问题的(我相信你会的!)