Comment interpréter et resoudre des erreurs dans Voozanoo

Edit me

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) :

resources.frontController.displayExceptions = false
lib.voozanoo.javascript.static = true
lib.yui.debug = false

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”

console_error1

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 dataquery medecin n’a pas de colonne libelle.
  • J’ai une condition d’affichage utilisant {medecin.libelle} mais mon dataquery medecin n’a pas de colonne libelle.

Exemples de corrections :

  • J’ajoute la colonne spex manquante à mon dataquery get_patient.
  • Je constate que mon dataquery avait un champ sex (faut de frappe) et donc, je modifie mon composant pour référencer le champ sex.

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”

console_error2

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 varset doctor .

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 colonne adresse.

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”

console_error3

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 en deces2.
  • J’ai mal orthographié deces dans un dataquery en lui ajoutant un 2 à la fin involontairement..

Exemples de corrections :

  • Je corrige le nom du varset en deces dans le dataquery.