خطأ

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

CI 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({
  name: 'MyError',
  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({
  name: 'MyError',
  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({
  name: 'MyError',
  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({
  name: 'MyError',
  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({
  name: 'MyError',
  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":"خطأ غير معروف"
    }
  ]
}
 */