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:
Quels sont ces étranges et mystérieux scripts intitulés "[VM](XXXX " et où faire ils viennent?
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.
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
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.
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.
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.
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.
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;
.
notez que la source du script est un fichier VMXXX.
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.