Outil de développement Chrome: [VM] fichier à partir de javascript

j'ai ajouté un point de rupture dans mon fichier javascript (jaydata.js) et a été en appuyant sur "Étape sur le prochain appel de la fonction." Quand il est arrivé à une ligne qui était:

},

un autre fichier intitulé" [VM] (8312) " est apparu. J'ai gardé en cliquant sur "Étape sur le prochain appel de la fonction" et maintenant, mon écran est:

enter image description here

Quels sont ces étranges et mystérieux scripts intitulés "[VM](XXXX " et où faire ils viennent?

113
demandé sur AllieCat 2013-06-28 18:50:18

8 réponses

[VM] (scriptId) n'a pas de sens particulier. C'est un nom fictif pour nous aider à distinguer le code qui ne sont pas directement lié à un nom de fichier, comme le code créé en utilisant eval et des amis.

dans le passé, tous ces scripts étaient simplement étiquetés (program) .

si vous êtes intéressé, juste chercher "[VM]" dans le code source du chrome , vous découvrirez que ces nombres n'ont aucune signification significative à l'extérieur les outils de développement.

mise à jour 2015-06-25

[VM] (scriptId) a été renommé en VMscriptId Il ya quelque temps , et voici le lien direct vers le résultat de recherche au cas où la valeur change à nouveau.

84
répondu Rob W 2018-03-30 15:05:30

lors de l'utilisation d'eval, le javascript est jeté dans la VMs du Débogueur Chrome. Afin de visualiser js créé avec eval sous Chrome Debugger Sources, définissez cet attribut à la fin (merci Splaktar) du js:

//@ sourceURL=dynamicScript.js

est-il possible de déboguer le chargement dynamique JavaScript par un débogueur comme WebKit, FireBug ou IE8 Developer Tool?

31
répondu Sully 2017-05-23 12:10:41

chaque fois que vous chargez du contenu HTML via AJAX, et que ce contenu contient des balises <script> , le script sera évalué en utilisant eval() et reconnu par la vue sources de Chrome comme un nouveau fichier commençant par 'VM'. Vous pouvez toujours aller à L'onglet Réseau, trouver la requête AJAX, et voir la réponse HTML dans son intégralité, y compris votre script.

30
répondu Sam Kauffman 2014-05-05 14:43:30

J'ai trouvé que VM est généré à partir de certaines extensions Chrome - ils insèrent CSS/JS dans la page et Chrome utilise les fichiers VM pour l'exécuter.

4
répondu user1124230 2015-05-19 09:02:02

lorsque vous déboguez une fenêtre enfant (iframe) source qui est ensuite déchargée, votre fichier source obtiendra également le préfixe VM et le fond jaune.

0
répondu JosdeHa 2017-10-26 13:40:23

j'ai rencontré le même problème. Le problème est que le code de mon application a été considéré comme des boîtes noires par accident. Quand j'ai essayé d'entrer dans le code, il n'arrêtait pas d'ouvrir ces onglets VMXXXX .

après avoir supprimé le paramètre de la boîte noire pour le fichier js de mon application, j'ai pu parcourir avec succès mon code.

0
répondu Justin Noel 2018-02-23 22:12:05

si vous voulez débugger des fichiers JS injectés par programmation dans chrome, vous pouvez utiliser la déclaration debugger; , c'est plus rapide que de trouver où se trouve votre script et aussi plus rapide que de générer un fichier avec sourceurl .

fonctionne comme un point de rupture et identifie automatiquement votre code dans l'onglet source de chrome où que vous utilisiez la déclaration debugger; .

Debugger;

notez que la source du script est un fichier VMXXX.

0
répondu Rodrirokr 2018-05-29 20:16:28

j'ai eu le même problème quand je déboguais mon application angulaire. Voir trop de scripts VM qui ne pouvaient pas être blackboxés était vraiment long à déboguer. J'ai plutôt choisi Mozilla / IE explorer pour déboguer.

-1
répondu Sameeksha Kumari 2018-03-28 04:31:07