Solution 1:

It is abbreviation of the phrase Virtual Machine. In the Chrome JavaScript engine (called V8) each script has its own script ID.

Sometimes V8 has no information about the file name of a script, for example in the case of an eval. So devtools uses the text "VM" concatenated with the script ID as a title for these scripts.

Some sites may fetch many pieces of JavaScript code via XHR and eval it. If a developer wants to see the actual script name for these scripts she can use sourceURL. DevTools parses and uses it for titles, mapping etc.

Solution 2:

Thanks to @MRB,

I revisited this problem, and found the solution today, thanks to https://stackoverflow.com/a/63221101/1818089

queueMicrotask (console.log.bind (console, "Look! No source file info..."));

It will group similar elements, so make sure you add a unique identifier to each log line to be able to see all data.

enter image description here

Demonstrated in the following example.

Instead of

data = ["Apple","Mango","Grapes"];
for(i=0;i<10;i++){
    queueMicrotask (console.log.bind (console, " info..."+i));
}

use

data = ["Apple","Mango","Grapes"];
for(i=0;i<data.length;i++){
    queueMicrotask (console.log.bind (console, " info..."+i));
}

A better way would be to make a console.print function that does so and call it instead of console.log as pointed out in https://stackoverflow.com/a/64444083/1818089

// console.print: console.log without filename/line number
console.print = function (...args) {
    queueMicrotask (console.log.bind (console, ...args));
}

Beware of the grouping problem mentioned above.

enter image description here