خطأ

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

[CI](https://github.com/sumor-cloud/error/actions/ Test Coverage Audit

التثبيت

npm i @sumor/error --save

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

إصدار Node.JS

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

تتطلب إصدار Node.JS ES module

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

{
  "type": "module"
}

الاستخدام

تحديد الخطأ

import defineError from '@sumor/error'

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

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: 'المستخدم {الاسم} موجود'
  },
  i18n: {
    zh: {
      USER_NOT_FOUND: 'المستخدم غير موجود',
      USER_EXISTED: 'المستخدم {الاسم} موجود'
    }
  }
})

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: 'المستخدم {الاسم} موجود'
  }
})

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: 'الحقل {الاسم} لا يمكن أن يكون فارغًا',
    FIELD_TOO_LONG: 'الحقل {الاسم} طويل جدًا'
  },
  i18n: {
    zh: {
      FIELD_VERIFY_FAILED: 'فشل التحقق من الحقل',
      FIELD_CANNOT_EMPTY: 'الحقل {الاسم} لا يمكن أن يكون فارغًا',
      FIELD_TOO_LONG: 'الحقل {الاسم} طويل جدًا'
    }
  }
})

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: 'الحقل {الاسم} لا يمكن أن يكون فارغًا',
    FIELD_TOO_LONG: 'الحقل {الاسم} طويل جدًا'
  }
})

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":"خطأ غير معروف"
    }
  ]
}
 */