Erreur

Un outil Sumor Cloud.
Plus de documentation Une bibliothèque de gestion des erreurs supportant plusieurs langues, des 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 Node.JS version 16.x ou supérieure

Requérir le module ES de Node.JS

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

{
  "type": "module"
}

Utilisation

Définir l'erreur

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'Utilisateur non trouvé',
    USER_EXISTED: 'Utilisateur {name} existait'
  }
})

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

throw new MyError('USER_EXISTED', { name: 'Alice' })
// sortie : Erreur : L'utilisateur Alice existait

Multi-langue

import defineError from '@sumor/error'

const MyError = defineError({
  language: 'en', // langue par défaut
  code: {
    USER_NOT_FOUND: 'Utilisateur non trouvé',
    USER_EXISTED: 'Utilisateur {name} existait'
  },
  i18n: {
    zh: {
      USER_NOT_FOUND: 'Utilisateur non trouvé',
      USER_EXISTED: 'Utilisateur {name} existait'
    }
  }
})

const error = new MyError('USER_EXISTED', { name: 'Alice' })
error.language = 'en' // changer la langue de l'erreur
console.log(error)
// sortie : Erreur : L'utilisateur Alice existait

error.language = 'zh' // changer la langue de l'erreur
console.log(error)
// sortie : Erreur : L'utilisateur Alice existait

Convertir l'erreur en JSON

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'Utilisateur non trouvé',
    USER_EXISTED: 'Utilisateur {name} existait'
  }
})

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

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: {
    zh: {
      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' })
])

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.language = 'zh'
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"
    }
  ]
}
*/

Combiner les 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"
    }
  ]
}
 */