@chubbyts/chubbyts-throwable-to-error

中文文档
2.4.1发布于 2026/11/09MITTypeScriptES Module零依赖近 30 天下载 2159

Converts any thrown value into an Error.

原始使用文档
文档目录7 节
  1. Description
  2. Why use it
  3. Requirements
  4. Installation
  5. Usage
  6. Behavior
  7. Copyright

chubbyts-throwable-to-error

CI Coverage Status Mutation testing badge npm-version

bugs code_smells coverage duplicated_lines_density ncloc sqale_rating alert_status reliability_rating security_rating sqale_index vulnerabilities

Description

Converts any thrown value into an Error.

In JavaScript, throw accepts anything: strings, numbers, plain objects, null, undefined, … That is why TypeScript types a catch variable as unknown. throwableToError normalizes that value into a real Error, so the rest of your code (logging, error responses, cause chains) can rely on message and name being present.

Why use it

  • Type safe: turns unknown into Error without unsafe as Error casts.
  • Never throws: circular references, throwing toJSON / toString / getters and unserializable values are handled and reported as [unserializable] instead of crashing your error handler.
  • Bounded output: messages longer than 2048 characters are truncated (suffix ...), so a huge thrown object can't flood your logs.
  • Keeps real errors untouched: an Error (or subclass) is returned as is, the same instance with its original stack.
  • Tiny: a single function, no dependencies.

Requirements

  • node: >= 22

Installation

Through NPM as @chubbyts/chubbyts-throwable-to-error.

npm i @chubbyts/chubbyts-throwable-to-error@^2.4.1

Usage

import { throwableToError } from '@chubbyts/chubbyts-throwable-to-error/throwable-to-error';

try {
  throw { key: 'value' };
} catch (e) {
  const error = throwableToError(e);

  error.name; // 'object'
  error.message; // '{"key":"value"}'
}

Behavior

Thrown valuenamemessage
new Error('example')unchanged (same instance)unchanged (same instance)
'example''string''example'
42'number''42'
true'boolean''true'
undefined'undefined''undefined'
null'null''null'
Symbol('example')'symbol''Symbol(example)'
() => null'function''() => null'
{ key: 'value' }'object''{"key":"value"}'
['example']'object''["example"]'
object with circular reference'object''[unserializable]'
  • Objects (and arrays) are serialized with JSON.stringify, all other values with String.
  • The name is the typeof of the thrown value ('null' for null).
  • The stack of a converted error is undefined: it would only point to throwableToError itself, not to the place where the value was thrown.

2026 Dominik Zogg

版本与发布记录

@chubbyts/chubbyts-throwable-to-error 共发布 23 个版本,首次发布于 2022/06/10;过去 12 个月发布了 11 个版本。

版本发布日期距今
2.4.1latest2026/11/091 天前
2.4.02026/11/081 天前
2.3.42026/10/2021 天前
2.3.32026/08/053 个月前
2.3.22026/08/053 个月前
2.3.12026/08/053 个月前

关于 @chubbyts/chubbyts-throwable-to-error 的常见问题

@chubbyts/chubbyts-throwable-to-error 是什么?

Converts any thrown value into an Error.

如何安装 @chubbyts/chubbyts-throwable-to-error?

在项目目录运行 npm install @chubbyts/chubbyts-throwable-to-error,或使用 pnpm add / yarn add / bun add。

@chubbyts/chubbyts-throwable-to-error 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@chubbyts/chubbyts-throwable-to-error 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@chubbyts/chubbyts-throwable-to-error 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@chubbyts/chubbyts-throwable-to-error 可以商用吗?

@chubbyts/chubbyts-throwable-to-error 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@chubbyts/chubbyts-throwable-to-error 的下载量有多少?

根据 npm 官方下载统计,@chubbyts/chubbyts-throwable-to-error 在 2026/10/10 – 2026/11/08 这 30 天内被下载 2,159 次,日均约 72 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@chubbyts/chubbyts-throwable-to-error 还在维护吗?

最新版本 2.4.1 发布于 2026/11/09(1 天前);至今共发布 23 个版本,其中过去 12 个月发布了 11 个;首次发布于 2022/06/10。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。