오류

Sumor Cloud 도구.
더 많은 문서 다국어 지원, 미리 정의된 오류 코드와 데이터 전달을 지원하는 오류 처리 라이브러리입니다.

CI Test Coverage Audit

설치

npm i @sumor/error --save

전제 조건

Node.JS 버전

Node.JS 버전 18.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')
// 출력: Error: 사용자를 찾을 수 없습니다

throw new MyError('USER_EXISTED', { name: 'Alice' })
// 출력: Error: 사용자 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)
// 출력: 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":"알 수 없는 오류"
    }
  ]
}
 */