Для этого нам нужно написать логику для захвата трассировки стека из объекта ошибки и выяснить, где именно функция anonymous
указала, что была выдана ошибка.
Номер строки, в которой выдается ошибка в Chrome, обозначается как <anonymous>:5:17
, где, как и в Firefox, он равен Function:5:17
.
try{
(new Function(`var hello = 10;
const world = 20;
let foo = 'bar';
xyz; //simulating error here
`))();
}catch(err){
let line = err.stack.split("\n").find(e => e.includes("<anonymous>:") || e.includes("Function:"));
let lineIndex = (line.includes("<anonymous>:") && line.indexOf("<anonymous>:") + "<anonymous>:".length) || (line.includes("Function:") && line.indexOf("Function:") + "Function:".length);
console.log(+line.substring(lineIndex, lineIndex + 1) - 2);
}