API : Débogage

Lorsque vous développez des programmes, qu'ils soient simples ou complexes, vous rencontrerez inévitablement des erreurs qui peuvent entraîner un dysfonctionnement du programme. En raison de la nature sandboxée de l'API Roll20, il peut être quelque peu difficile de déterminer précisément ce qui se passe. Voici donc quelques conseils qui peuvent vous aider à diagnostiquer les problèmes liés à vos scripts.


on("change:graphic:left", function(obj) {
   //Quelle est la valeur gauche de l'objet qui entre ici ?
   log(obj.get("left"));
   obj.set("left", obj.get("left") + 70);
   //Quelle est la valeur actuelle ?
   log(obj.get("left"));
   //Vous pouvez également déboguer des objets entiers pour afficher la liste de leurs attributs actuels
   log(obj);
});

Vous trouverez le résultat de vos commandes de journalisation dans la console Mod (API), qui se trouve sur la page Éditeur de scripts de votre campagne.


Verrous d'erreur

L'API Roll20 corrigera automatiquement les petites erreurs dans votre script en le redémarrant si nécessaire. Toutefois, si l'API détecte une erreur grave qu'elle ne peut pas résoudre, plutôt que de redémarrer votre script à plusieurs reprises pour qu'il continue à générer des erreurs, elle appliquera un « verrouillage d'erreur » à votre campagne, ce qui empêchera vos scripts Mod (API) de s'exécuter jusqu'à ce que l'erreur soit résolue. Si vos scripts ont été verrouillés en raison d'une erreur, le message suivant s'affichera sur la page Éditeur de scripts :

Erreur lock.png

Veuillez ne pas vous inquiéter. Veuillez apporter les modifications nécessaires à vos scripts afin de résoudre le problème, puis cliquez sur le bouton « Enregistrer le script ». Lorsque vous effectuez cette opération, le verrouillage d'erreur sera « effacé » et l'API tentera à nouveau d'exécuter vos scripts. Si une autre erreur survient, le verrouillage d'erreur sera réappliqué. Vous pouvez répéter ce processus autant de fois que nécessaire pour corriger l'erreur. L'API ne vous empêchera jamais de supprimer vos verrous d'erreur parce que vous avez échoué trop de fois.


Erreurs courantes

Voici quelques erreurs fréquentes :


myvar n'est pas défini

on("ready", function() {
    var myVar;
    log(myvar);
});

Bien que le message d'erreur indique « non défini », ce qui s'est réellement produit, c'est que la variable n'est pasdéclarée. L'une des causes les plus courantes est une erreur de frappe dans le nom d'une de vos variables, telle qu'une majuscule manquante.


Impossible de lire la propriété « myProperty » ou d'appeler la méthode « myMethod ».

on("ready", function() {
    var myVar;
    log(myVar.myProperty);
    log(myVar.myMethod());
});

myVarn'est pas défini, donc le script ne peut pas déterminer comment gérer votre tentative d'accès à une propriété demyVar. Cela est probablement dû à l'une des raisons suivantes :

  • Vous avez tenté de localiser un objet, mais le résultat n'a pas été défini. Veuillez effectuer une vérification d'erreur pour vous assurer que votre variable est bien définie avant d'accéder à ses propriétés.
  • Votre variable est définie de manière conditionnelle (à l'aide d'une série d'instructionsifou similaires), et aucune de vos conditions ne correspondait. Par conséquent, votre variable a été déclarée, mais jamais définie. Veuillez vous assurer que vous avez défini des conditions pour toutes les possibilités, ou créez une option par défaut, ou effectuez une vérification d'erreur pour vous assurer que votre variable est définie avant d'accéder à ses propriétés.

Jeton inattendu

Il vous manque un personnage ou vous avez un personnage en trop. Cela peut résulter de l'oubli d'une virgule entre une liste de propriétés dans un objet ou des éléments dans un tableau, ou du fait d'avoir une parenthèse fermante en trop ou en moins à la fin d'un appel de méthode imbriqué complexe.


La plupart des propriétés des objets Roll20 doivent être consultées via les méthodesget()etset(). Lorsque vous utilisezget(), il est recommandé d'omettre le trait de soulignement initial sur les propriétés en lecture seule.

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 20 sur 123