Certaines librairies, dont les libraires de chargement comme RequireJS, chargent des scripts JS et les évaluent avec
eval(). Le problème avec ce genre de chargement, est qu'il rend plus difficile le debug du JS avec les outils du navigateur. En effet, les points d'arrêt ne peuvent être posés que sur du code situé dans un fichier dont le nom a été défini par l'utilisateur.Cependant, dans le cas d'un code executé par eval, le contenu a été extrait hors de son fichier d'origine, puis est exécuté dans la VM de Chrome. Le plus souvent, le code est situé dans une source dont le nom est généré dynamiquement
à chaque chargement, ex : "VM 7799".
"Breakpoints can be set in dynamic JavaScript only if it has a user supplied name." Sources
Cependant, il existe une solution alternative consistant à "dire à Chrome" de donner un nom spécifique et fixe au fichier lorsqu'il sera exécuté dans la VM, en utilisant les
sourceURL.
Dans le fichier qui sera exécuté par eval, il faut placer à la fin l'instruction suivante :
//# sourceURL=dynamicScript.js
Cette instruction, destinée au navigateurs, aura pour effet de ne pas générer à chaque chargement, un nom de fichier différent dans la VM, mais d'utiliser celui définit via la sourceUrl.