Comment interpréter et resoudre des erreurs dans Voozanoo
Introduction
Lors de la création et de l’évolution de votre projet Voozanoo, vous ferez certainement face à des erreurs techniques dues à de mauvais paramétrages dans Voozanoo ou EpiCraft. Ce document a pour but de recenser les erreurs les plus communes, de les expliquer et proposer une façon de les corriger.
Cette liste est destinée à être nourrie par l’expérience.
Pré-requis : les directives des fichiers “application.ini”
Une partie de la configuration des applications Voozanoo 4 se trouve dans des fichiers application.ini
(voir cet article). Ces fichiers contiennent des directives qui décrivent la façon dont l’application doit se comporter en cas d’erreur : afficher des détails sur l’erreur ou pas.
De façon générale, le principe et le suivant :
- Sur un environnement de développement ou de tests, on affiche les erreurs pour faciliter le débugage.
- Sur un environnement de production, on cache les erreurs pour ne pas donner d’information à d’éventuels attaquant.
Voici les directives dont on parle (à passer chacune à l’inverse pour afficher le détails des erreurs) :
Comment trouver les messages d’erreur ?
Les erreurs peuvent se signaler de plusieurs manières :
- La plupart de temps, il y aura un message au milieu l’écran “Une erreur interne est survenue pendant le processus”.
- Sinon, parfois, le formulaire n’aura pas été chargé complètement et il manquera le bas de la page.
Utilisez les outils de développement intégrés dans votre navigateur afin de voir les informations qui vous aideront à débuguer. Sur Firefox et Chrome, ouvrez ou fermez la console de développement par la touche F12. Attention, la console doit souvent être déjà ouverte au moment de l’erreur afin de capturer les informations d’échec.
Les erreurs apparaîteront :
- soit dans l’onglet “console” ;
- soit dans l’onglet “réseau” ou “network”.
Les erreurs communes
Voici des exemples d’erreurs et leur résolution.
Exemple 1 : field xxxx doesn’t exists in dataset xxxxx
Erreur affichée : MetaData: field spex doesn't exists in dataset get_patients, method name: GetFieldType, class name: Y.MetaData.
Popup d’erreur : “Une erreur interne est survenue pendant le processus”
Outils de développement : Onglet “Console”
Explication : Un composant sur la page fait référence à un champ spex
du dataset get_patients
alors que ce dataset ne contient pas un tel champ
Exemples de situations :
- J’essaie d’afficher une colonne
libelle
sur un listing de médecin mais mon dataquerymedecin
n’a pas de colonnelibelle
. - J’ai une condition d’affichage utilisant
{medecin.libelle}
mais mon dataquerymedecin
n’a pas de colonnelibelle
.
Exemples de corrections :
- J’ajoute la colonne
spex
manquante à mon dataqueryget_patient
. - Je constate que mon dataquery avait un champ
sex
(faut de frappe) et donc, je modifie mon composant pour référencer le champsex
.
Exemple 2 : Varset “xxx” - Item not found for VarName “xxx”
Erreur affichée : Varset "doctor" - Item not found for VarName "adresse"
Popup d’erreur : “Une erreur interne est survenue pendant le processus”
Outils de développement : Onglet “Réseau/Network” puis “Réponse”
Explication : Un des dataqueries essaie d’obtenir la valeur du champ adresse
du varset doctor
mais ce varset ne contient pas un tel champ.
Exemples de situations :
- Soit j’ai mal orthographié
adresse
. - Soit le champ
adresse
n’est pas dans le varsetdoctor
.
Exemples de corrections :
- Je corrige l’orthographe de
adresse
dans le dataquery. - Soit je corrige le nom de la table
doctor
qui cible sans doute la mauvaise table pour la colonneadresse
.
Exemple 3 : Varset name : “xxx” Not Exists
Erreur affichée : Varset name : "deces2" Not Exists
Popup d’erreur : “Une erreur interne est survenue pendant le processus”
Outils de développement : Onglet “Réseau/Network” puis “Réponse”
Explication : Un des dataqueries essaie d’aller chercher des infos dans le varset deces2
mais ce varset n’existe pas.
Exemples de situations :
- J’ai récemment renommé mon varset
deces
endeces2
. - J’ai mal orthographié
deces
dans un dataquery en lui ajoutant un2
à la fin involontairement..
Exemples de corrections :
- Je corrige le nom du varset en
deces
dans le dataquery.