Это случилось уже во второй раз, и, как вы понимаете, отладчик, который показывает неверную информацию, — это худшее, что может случиться при отладке. Что происходит, так это то, что при использовании исходных карт отладчик считает, что виртуальная машина находится на определенной строке, но на самом деле ее еще нет или, что еще хуже, она никогда не достигнет этой строки. Исходные карты создаются с помощью подключаемого модуля Grunt uglify, который использует UglifyJS2.
Пример:
if(something === 1){
console.log("it's something"); // debugger thinks the VM is here
else{
console.log("no it's not"); // while actually it's here
}
Затем это напечатало no it's not
, хотя отладчик прыгнул в if
Другой пример, который я испытал, был:
var that = this;
some.functionCall(1, function(){
console.log(that); //this is where the debugger thinks the vm is
// debugger: that = undefined
// console prints nothing to that point
});
Когда я продолжил программу, console.log(that)
в конце концов загорелся.
Кто-нибудь еще сталкивался с такой же проблемой? Это скорее проблема UglifyJS2 или Google Chrome?
Версия Chrome: 38.0.2125.8 для разработчиков (64-разрядная версия)
Uglify2JS: 2.4.0
grunt-contrib-uglify: 0.5.1