我从Chrome Development Tool: [VM] file from javascript明白,一个[VM]
文件在谷歌浏览器内执行的代码是不直接依赖于文件中的代码。调试此JavaScript错误的下一步是什么?
客户端近日报道,地理编码功能不再工作在他们的网站。这是一个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
,但我已经知道了。
我敢肯定的是,谷歌地理编码工作就好了。在我的沮丧中,我反复点击了“Map my Address”按钮,导致单独的Geocode was not successful for the following reason: OVER_QUERY_LIMIT
错误,我在此基础上做出了特定假设。
接下来你会在这种情况下尝试什么?
我会尝试寻找到你的未定义的变量应该他们为什么没有定义加以界定和确定和然后定义它们。这显然是你和堆栈跟踪指出的问题。 –
[code as posted(jsfiddle)](http://jsfiddle.net/geocodezip/c4bpqfas/)适合我。这是代码之外的东西。请发布证明此问题的[最小,完整,测试和可读示例](http://stackoverflow.com/help/mcve)。如果您真的认为地理编码器返回的状态可能是错误的(例如OVER_QUERY_LIMIT),那么您应该检查它。 – geocodezip