خطأ

أداة Sumor Cloud.
المزيد من التوثيق مكتبة لإدارة الأخطاء تدعم اللغات المتعددة، ورموز الأخطاء المحددة مسبقًا، وتمرير البيانات.

CI Test Coverage Audit

التثبيت

npm i @sumor/error --save

المتطلبات الأساسية

إصدار Node.JS

يتطلب إصدار Node.JS 16.x أو أعلى.

يتطلب تحميل Node.JS كموديول ES

نظرًا لأن هذه الحزمة مكتوبة باستخدام كموديول ES، يرجى تغيير الكود التالي في ملف package.json الخاص بك:

{
  "type": "module"
}

الاستخدام

تعريف الخطأ

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'المستخدم غير موجود',
    USER_EXISTED: 'المستخدم {name} موجود'
  }
})

throw new MyError('USER_NOT_FOUND')
// الإخراج: خطأ: المستخدم غير موجود

throw new MyError('USER_EXISTED', { name: 'Alice' })
// الإخراج: خطأ: المستخدم Alice موجود

لغات متعددة

import defineError from '@sumor/error'

const MyError = defineError({
  language: 'en', // اللغة الافتراضية
  code: {
    USER_NOT_FOUND: 'المستخدم غير موجود',
    USER_EXISTED: 'المستخدم {name} موجود'
  },
  i18n: {
    zh: {
      USER_NOT_FOUND: 'المستخدم غير موجود',
      USER_EXISTED: 'المستخدم {name} موجود'
    }
  }
})

const error = new MyError('USER_EXISTED', { name: 'Alice' })
error.language = 'en' // تغيير لغة الخطأ
console.log(error)
// الإخراج: خطأ: المستخدم Alice موجود

error.language = 'zh' // تغيير لغة الخطأ
console.log(error)
// الإخراج: خطأ: المستخدم Alice موجود

تحويل الخطأ إلى JSON

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    USER_NOT_FOUND: 'المستخدم غير موجود',
    USER_EXISTED: 'المستخدم {name} موجود'
  }
})

const error = new MyError('USER_EXISTED', { name: 'Alice' })
console.log(error.json())
// الإخراج: {"code":"USER_EXISTED","message":"المستخدم Alice موجود"}

الخطأ الأساسي

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    FIELD_VERIFY_FAILED: 'فشل تحقق الحقل',
    FIELD_CANNOT_EMPTY: 'لا يمكن أن يكون الحقل {name} فارغًا',
    FIELD_TOO_LONG: 'الحقل {name} طويل جدًا'
  },
  i18n: {
    zh: {
      FIELD_VERIFY_FAILED: 'فشل تحقق الحقل',
      FIELD_CANNOT_EMPTY: 'لا يمكن أن يكون الحقل {name} فارغًا',
      FIELD_TOO_LONG: 'الحقل {name} طويل جدًا'
    }
  }
})

const error = new MyError('FIELD_VERIFY_FAILED', {}, [
  new MyError('FIELD_CANNOT_EMPTY', { name: 'اسم المستخدم' }),
  new MyError('FIELD_TOO_LONG', { name: 'كلمة السر' })
])

console.log(error.json())
/* 
الإخراج:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"فشل تحقق الحقل",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"لا يمكن أن يكون الحقل اسم المستخدم فارغًا"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"الحقل كلمة السر طويل جدًا"
    }
  ]
}
*/

error.language = 'zh'
console.log(error.json())
/*
الإخراج:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"فشل تحقق الحقل",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"لا يمكن أن يكون الحقل اسم المستخدم فارغًا"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"الحقل كلمة السر طويل جدًا"
    }
  ]
}
*/

دمج الخطأ القياسي

import defineError from '@sumor/error'

const MyError = defineError({
  code: {
    FIELD_VERIFY_FAILED: 'فشل تحقق الحقل',
    FIELD_CANNOT_EMPTY: 'لا يمكن أن يكون الحقل {name} فارغًا',
    FIELD_TOO_LONG: 'الحقل {name} طويل جدًا'
  }
})

const error = new MyError('FIELD_VERIFY_FAILED', {}, [
  new MyError('FIELD_CANNOT_EMPTY', { name: 'اسم المستخدم' }),
  new MyError('FIELD_TOO_LONG', { name: 'كلمة السر' }),
  new Error('خطأ مجهول')
])

console.log(error.json())
/*
الإخراج:
{
  "code":"FIELD_VERIFY_FAILED",
  "message":"فشل تحقق الحقل",
  "errors":[
    {
      "code":"FIELD_CANNOT_EMPTY",
      "message":"لا يمكن أن يكون الحقل اسم المستخدم فارغًا"
    },{
      "code":"FIELD_TOO_LONG",
      "message":"الحقل كلمة السر طويل جدًا"
    },{
      "code":"UNKNOWN_ERROR",
      "message":"خطأ مجهول"
    }
  ]
}
 */