Je construis quelque chose qui inclut javascripts à la volée de manière asynchrone, ce qui fonctionne, mais je cherche à améliorer la détection d'erreur (donc toutes les erreurs ne sont pas seulement semblent venir d'une ligne près de l'appel AJAX qui les tire vers le bas.Tracer la ligne source d'une erreur dans un eval Javascript
Si j'utilise eval pour évaluer un fichier javascript multiligne, est-il possible de tracer la ligne qui une erreur se produit sur
? Par en gardant des références aux variables dont j'ai besoin pour inclure, je n'ai aucun problème pour déterminer dans quel fichier les erreurs se produisent. Mon problème est de déterminer quelle ligne l'erreur se produit dans.
Exemple:
try {
eval("var valid_statement = 7; \n invalid_statement())))");
} catch(e) {
var err = new Error();
err.message = 'Error in Evald Script: ' + e.message;
err.lineNumber = ???
throw err;
}
Comment puis-je dire que l'erreur est survenue dans la deuxième ligne là-bas? Plus précisément, je suis intéressé à le faire dans Firefox.
Je sais que les objets d'erreur ont e.stack
dans les navigateurs Mozilla, mais la sortie ne semble pas prendre correctement en compte les retours à la ligne.
Quelle "deuxième ligne" souhaitez-vous? L'erreur 'eval' et l'erreur de syntaxe dans la chaîne evaled sont toutes les deux sur la deuxième ligne. – matyr
Dans le contexte du code affiché ci-dessus, oui. Dans le contexte du code encapsulé dans la chaîne, non. Je veux que cette nouvelle ligne soit analysée comme elle le serait dans un fichier afin de pouvoir signaler les erreurs de ligne qui se produisent dans la chaîne eval'd. –