Erreur

Un outil Sumor Cloud.
Plus de documentation
Une bibliothèque de gestion des erreurs qui prend en charge le multilinguisme, les codes d'erreur prédéfinis et le passage de données.

CI Test Couverture Audit

Installation

npm i @sumor/error --save

Prérequis

Version de Node.JS

Nécessite la version Node.JS 16.x ou supérieure.

Module ES de Node.JS requis

Comme ce package est écrit en module ES, veuillez modifier le code suivant dans votre fichier package.json :

{
  "type": "module"
}

Utilisation

Définir une erreur

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'Utilisateur non trouvé',
    USER_EXISTED: 'L'utilisateur {name} existe déjà'
  }
})

throw new MyError('USER_NOT_FOUND')
// sortie: Error: Utilisateur non trouvé

throw new MyError('USER_EXISTED', { name: 'Alice' })
// sortie: Error: L'utilisateur Alice existe déjà

Multilinguisme

import defineError from '@sumor/error'

const MyError = defineError({
  language: 'fr', // langue par défaut
  code: {
    USER_NOT_FOUND: 'Utilisateur non trouvé',
    USER_EXISTED: 'L'utilisateur {name} existe déjà'
  },
  i18n: {
    en: {
      USER_NOT_FOUND: 'User not found',
      USER_EXISTED: 'User {name} existed'
    }
  }
})

const erreur = new MyError('USER_EXISTED', { name: 'Alice' })
erreur.langue = 'fr' // changer la langue de l'erreur
console.log(erreur)
// sortie: Error: L'utilisateur Alice existe déjà

erreur.language = 'en' // changer la langue de l'erreur
console.log(erreur)
// sortie: Error: User Alice existed

Convertir l'erreur en JSON

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'Utilisateur non trouvé',
    USER_EXISTED: "L'utilisateur {name} existe déjà"
  }
})

const erreur = new MyError('USER_EXISTED', { name: 'Alice' })
console.log(erreur.json())
// sortie: {"code":"USER_EXISTED","message":"L'utilisateur Alice existe déjà"}

Erreur sous-jacente

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    FIELD_VERIFY_FAILED: 'Échec de la vérification du champ',
    FIELD_CANNOT_EMPTY: 'Le champ {name} ne peut pas être vide',
    FIELD_TOO_LONG: 'Le champ {name} est trop long'
  },
  i18n: {
    en: {
      FIELD_VERIFY_FAILED: 'Field verify failed',
      FIELD_CANNOT_EMPTY: 'Field {name} cannot be empty',
      FIELD_TOO_LONG: 'Field {name} is too long'
    }
  }
})

const erreur = new MyError('FIELD_VERIFY_FAILED', {}, [
  new MyError('FIELD_CANNOT_EMPTY', { name: 'nom d'utilisateur' }),
  new MyError('FIELD_TOO_LONG', { name: 'mot de passe' })
])

console.log(erreur.json())
/*
sortie:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"Échec de la vérification du champ",
  "erreurs":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"Le champ nom d'utilisateur ne peut pas être vide"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"Le champ mot de passe est trop long"
    }
  ]
}
*/

erreur.langue = 'en'
console.log(erreur.json())
/*
sortie:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"Field verify failed",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"Field username cannot be empty"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"Field password is too long"
    }
  ]
}
*/

Combinaison d'erreurs standard

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    FIELD_VERIFY_FAILED: 'Échec de la vérification du champ',
    FIELD_CANNOT_EMPTY: 'Le champ {name} ne peut pas être vide',
    FIELD_TOO_LONG: 'Le champ {name} est trop long'
  }
})

const erreur = new MyError('FIELD_VERIFY_FAILED', {}, [
  new MyError('FIELD_CANNOT_EMPTY', { name: 'nom d'utilisateur' }),
  new MyError('FIELD_TOO_LONG', { name: 'mot de passe' }),
  new Error('Erreur inconnue')
])

console.log(erreur.json())
/*
sortie:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"Échec de la vérification du champ",
  "erreurs":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"Le champ nom d'utilisateur ne peut pas être vide"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"Le champ mot de passe est trop long"
    },{
      "code":"UNKNOWN_ERROR",
      "message":"Erreur inconnue"
    }
  ]
}
 */