خطأ

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

CI Test Coverage Audit

التثبيت

npm i @sumor/error --save

الشروط الأساسية

نسخة Node.JS

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

تتطلب الوحدة النمطية ES module Node.JS

نظرًا لأن هذه الحزمة مكتوبة بتنسيق ES module، يرجى تغيير الرمز التالي في ملف 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":"خطأ غير معروف"
    }
  ]
}
 */