خطأ

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

CI Test Coverage Audit

التثبيت

npm i @sumor/error --save

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

إصدار Node.JS

يتطلب إصدار Node.JS 16.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":"خطأ غير معروف"
    }
  ]
}
 */