错误节点
用于创建的通用 API 节点.js 错误
目录
这是什么?
此软件包提供了一个通用的 API 创建 节点.js 错误。 。 。 .
我什么时候用这个?
此软件包旨在帮助开发者构建 小马桶,以及更多动词工具,如
mlly,通过提供一套公用事业和建筑师功能来创建 节点.js 错误。 。 。 .
安装
这个软件包是 仅限无害环境管理。 。 。 .
在Node.js(第18版+)中与 线条数字 :
yarn add @flex-development/errnode
见 Git - 协议QQ Yarn 关于从Git安装的细节.
在德诺与 esm.sh数字 :
import { ERR_MODULE_NOT_FOUND } from 'https://esm.sh/@flex-development/errnode'
在浏览器中 esm.sh数字 :
<script type="module">
import { ERR_MODULE_NOT_FOUND } from 'https://esm.sh/@flex-development/errnode'
</script>
使用
说我们有文件 example.mjs数字 :
import { ERR_INVALID_ARG_TYPE, isNodeError } from '@flex-development/errnode'
/**
* Ensure `value` is a string.
*
* @see {@linkcode ErrInvalidArgType}
*
* @param {unknown} value
* Value supplied by user
* @param {string} name
* Name of invalid argument or property
* @return {value is string}
* `true` if `value` is a string
* @throws {import('@flex-development/errnode').ErrInvalidArgType}
* If `value` is not a string
*/
function validateString(value, name) {
if (typeof value === 'string') return true
throw new ERR_INVALID_ARG_TYPE(name, 'string', value)
}
try {
validateString(null, 'path')
} catch (e) {
console.log('isNodeError:', isNodeError(e))
console.log('TypeError:', e instanceof TypeError, '\n')
throw e
}
运行中 node example.mjs 产量 :
isNodeError: true
TypeError: true
file:///node_modules/@flex-development/errnode/dist/internal/stack-trace.mjs:9
Error.captureStackTrace(error);
^
TypeError: The 'path' argument must be of type string. Received null
at __node_internal_captureLargerStackTrace (file:///node_modules/@flex-development/errnode/dist/internal/stack-trace.mjs:9:9)
at new NodeError (file:///node_modules/@flex-development/errnode/dist/e.mjs:50:45)
at validateString (file:///example.mjs:19:9)
at file:///example.mjs:23:3
at ModuleJob.run (node:internal/modules/esm/module_job:234:25)
at async ModuleLoader.import (node:internal/modules/esm/loader:473:24)
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:123:5) {
code: 'ERR_INVALID_ARG_TYPE'
}
API 密码
此套件会导出以下标识符 :
EcodesdetermineSpecificTypeerrorsERR_ARG_NOT_ITERABLEERR_ENCODING_NOT_SUPPORTEDERR_IMPORT_ASSERTION_TYPE_FAILEDERR_IMPORT_ASSERTION_TYPE_MISSINGERR_IMPORT_ASSERTION_TYPE_UNSUPPORTEDERR_IMPORT_ATTRIBUTE_MISSINGERR_IMPORT_ATTRIBUTE_TYPE_INCOMPATIBLEERR_IMPORT_ATTRIBUTE_UNSUPPORTEDERR_INCOMPATIBLE_OPTION_PAIRERR_INVALID_ARG_TYPEERR_INVALID_ARG_VALUEERR_INVALID_FILE_URL_HOSTERR_INVALID_FILE_URL_PATHERR_INVALID_MODULE_SPECIFIERERR_INVALID_PACKAGE_CONFIGERR_INVALID_PACKAGE_TARGETERR_INVALID_RETURN_VALUEERR_INVALID_THISERR_INVALID_TUPLEERR_INVALID_URL_SCHEMEERR_INVALID_URLERR_METHOD_NOT_IMPLEMENTEDERR_MISSING_ARGSERR_MISSING_OPTIONERR_MODULE_NOT_FOUNDERR_NETWORK_IMPORT_DISALLOWEDERR_NO_CRYPTOERR_NO_ICUERR_OPERATION_FAILEDERR_PACKAGE_IMPORT_NOT_DEFINEDERR_PACKAGE_PATH_NOT_EXPORTEDERR_UNHANDLED_ERRORERR_UNKNOWN_BUILTIN_MODULEERR_UNKNOWN_ENCODINGERR_UNKNOWN_FILE_EXTENSIONERR_UNKNOWN_MODULE_FORMATERR_UNSUPPORTED_DIR_IMPORTERR_UNSUPPORTED_ESM_URL_SCHEMEERR_UNSUPPORTED_RESOLVE_REQUEST
formatListhideStackFramesisNodeErrorsyscodes
没有默认导出 .
错误
构造函数代表 节点.js 错误代码构造参数用于构建 错误消息 .
错误(及其类型)可单独导入:
import {
ERR_INVALID_MODULE_SPECIFIER,
ERR_INVALID_PACKAGE_CONFIG,
ERR_INVALID_PACKAGE_TARGET,
ERR_MODULE_NOT_FOUND,
ERR_PACKAGE_IMPORT_NOT_DEFINED,
ERR_PACKAGE_PATH_NOT_EXPORTED,
ERR_UNSUPPORTED_DIR_IMPORT,
type ErrInvalidModuleSpecifier,
type ErrInvalidModuleSpecifierArgs,
type ErrInvalidModuleSpecifierConstructor,
type ErrInvalidPackageConfig,
type ErrInvalidPackageConfigArgs,
type ErrInvalidPackageConfigConstructor,
type ErrInvalidPackageTarget,
type ErrInvalidPackageTargetArgs,
type ErrInvalidPackageTargetConstructor,
type ErrModuleNotFound,
type ErrModuleNotFoundArgs,
type ErrModuleNotFoundConstructor,
type ErrPackageImportNotDefined,
type ErrPackageImportNotDefinedArgs,
type ErrPackageImportNotDefinedConstructor,
type ErrPackagePathNotExported,
type ErrPackagePathNotExportedArgs,
type ErrPackagePathNotExportedConstructor,
type ErrUnsupportedDirImport,
type ErrUnsupportedDirImportConstructor
} from '@flex-development/errnode'
...或者全部同时使用 errors 导出 :
import { errors } from '@flex-development/errnode'
见 源代码 用于文档.
说明: 此软件包 不为每次出错导出一个构造器。提交特性请求(如果
你准备挑战 : wink:) 添加一个构建器.
E 不过,可以使用.
E(code, Base, message)
创建节点.js 错误构建器 .
构造参数传递到 format 如果错误 message 是一个字符串,或者 message 如果是的话
a 函数。 消息函数也以新节点.js 错误实例调用为 this。 。 。 .
签署
function E<T extends NodeErrorConstructor>(
code: T['prototype']['code'],
Base: ErrorConstructor,
message: MessageFn<T['prototype'], Parameters<T>> | string
): T
function E<T extends NodeError, Args extends any[] = any[]>(
code: T['code'],
Base: ErrorConstructor,
message: MessageFn<T, Args>
): NodeErrorConstructor<T, Args>
参数
code(单位:千美元)Code(中文(简体) ) — 错误代码Base(单位:千美元)ErrorConstructor(中文(简体) ) ——基类message(单位:千美元)MessageFn|string(中文(简体) ) — 错误消息字符串或函数
回返
(单位:千美元)NodeErrorConstructor(中文(简体) ) NodeError 建筑师.
codes
节点.js出错代码.
见 NODE_VERSIONS 用于列出支持的Node.js版本.
determineSpecificType(value)
确定类型匹配出错的具体值类型.
参数
value(单位:千美元)unknown(中文(简体) ) ——要检查的值
回返
(单位:千美元)string具体类型 value。 。 。 .
formatList(list[, type])
在窗体中创建列表字符串 'A and B' 或者说 'A, B, ..., and Z。 。 。 .
参数
list(单位:千美元)string | readonly string[](中文(简体) ) 列表改为格式type(单位:千美元)'and' | 'or' | null | undefined,可选) — 列表过渡类型以在最后元素前插入- 默认数字 :
'and'
- 默认数字 :
回返
(单位:千美元)string) 格式化列表.
hideStackFrames(fn)
从 Node.js 核心错误中删除不必要的框架 .
类型参数
T(单位:千美元)Fn(中文(简体) ) ——要围起来的函数
参数
fn(单位:千美元)T(中文(简体) ) ——要围起来的函数
回返
(单位:千美元)T)被包裹的函数.
isNodeError(value)
检查是否 value 是一个 NodeError。 。 。 .
参数
value(单位:千美元)unknown(中文(简体) ) ——要检查的值
回返
(单位:千美元)value is NodeError(中文(简体) ) true 若为 value 实值 NodeError, (中文(简体) ), false 否则.
syscodes
系统出错代码.
见 NODE_VERSIONS 用于列出支持的Node.js版本.
类型
此软件包已全部输入 类型脚本。 。 。 .
Code
在需要节点错误代码(TypeScript type)时可以发生的注册代码的结合.
为了登记新的代码,增加 NodeErrorMap自动加入工会.
type Code = Extract<keyof NodeErrorMap, string>
ErrnoException<[T]>
节点.js例外对象(TypeScript接口).
类型参数
T(单位:千美元)SystemCode,可选) ——系统出错代码- 默认数字 :
SystemCode
- 默认数字 :
扩展
Error
属性
code(单位:千美元)T(中文(简体) ) ——系统出错代码errno(单位:千美元)number(中文(简体) ) — libuv 错误编号message(单位:千美元)string(中文(简体) ) ——错误消息,总是由syscall财务报告和审定财务报表codepath?(单位:千美元)string | undefined(中文(简体) ) — 相关的无效路径名syscall(单位:千美元)string(中文(简体) ) — 失败 循环 说明
MessageFn<[T][, Args]>
构建错误消息 .
类型参数
T(单位:千美元)NodeError,可选) ——节点出错- 默认数字 :
NodeError
- 默认数字 :
Args(单位:千美元)readonly any[],可选) ——信息参数- 默认数字 :
any[]
- 默认数字 :
参数
this(单位:千美元)T(中文(简体) ) ——节点出错对象...args(单位:千美元)Args(中文(简体) ) ——信息参数
回返
(单位:千美元)string)错误消息.
NodeErrorConstructor<[T][, Args]>
Node.js 错误构建器(TypeScript接口).
类型参数
T(单位:千美元)NodeError,可选) ——节点出错- 默认数字 :
NodeError
- 默认数字 :
Args(单位:千美元)readonly any[],可选) ——信息参数- 默认数字 :
any[]
- 默认数字 :
签署
new (...args: Args): T(...args: Args): T
属性
prototype(单位:千美元)T(中文(简体) ) ——节点.js 错误原型
NodeErrorMap
Node.js错误代码的注册(TypeScript接口).
在开发使用更多代码的公用事业时,增加 NodeErrorMap 登记这些代码:
declare module '@flex-development/errnode' {
interface NodeErrorMap {
ERR_CUSTOM: true
}
}
NodeError<[T]>
Node.js 出错对象(TypeScript接口).
类型参数
T(单位:千美元)Code,可选) — 错误代码- 默认数字 :
Code
- 默认数字 :
扩展
Error
属性
code(单位:千美元)T(中文(简体) ) — 错误代码toString(单位:千美元)() => string(中文(简体) ) ——获得错误的字符串表示
Stringifiable
带有一个值 toString 方法(TypeScript接口).
属性
toString(单位:千美元)() => string(中文(简体) ) ——获得值的字符串表示符
SystemCode
在需要系统错误代码(TypeScript type)时可以发生的注册代码的结合.
为了登记新的代码,增加 SystemErrorMap自动加入工会.
type SystemCode = Extract<keyof SystemErrorMap, string>
SystemErrorMap
系统出错代码的注册(TypeScript接口).
在开发使用更多代码的公用事业时,增加 SystemErrorMap 登记这些代码:
declare module '@flex-development/errnode' {
interface SystemErrorMap {
ECUSTOM: true
}
}
贡献
见 CONTRIBUTING.md。 。 。 .
这个项目有一个 行为守则通过与该存储库、组织或 你同意遵守它的规定.