@cloudron/safetydance

中文文档
3.2.0发布于 2026/10/17MITES Module零依赖近 30 天下载 5798

节点的例外安全

中文使用文档
文档目录6 节
  1. 安装
  2. 使用量
  3. 安全. 克赖里
  4. 安全设置
  5. 安全设置
  6. API 密码

安全舞蹈

这个节点.js模块为您提供了例外安全. 这就是说 此模块的功能从未丢出.

如果你对节点感到烦恼 Js内置的API扔出例外 使用例外作为多值返回语句,此模块为您所用.

此模块在您要调用的函数中捕获任何例外 。 如果有的话 也不例外,它总是这样 如果有一个例外,它捕获 它通过错误属性(如错误)提供.

因此,与其说:

try {
    var result = JSON.parse(something);
} catch (e) {
    ...
}

您可以写:

var result = safe.JSON.parse(something);
if (result === null) { ... }

安装

npm 安装安全带

使用量

您可以调用任意同步函数而无需担心例外.

var safeCall = require('safetydance');
var result = safeCall(function () { return 1 + 2; }); // will return 3
result = safeCall(function () { throw new Error('bad'); }); // will return null

要通过“ this” :

var obj = { a: 10 };
var result = safeCall(function () { return this.a; }.bind(obj)); // will return 10

本模块为常用功能提供方便.

var safe = require('safetydance');
var json = safe.JSON.parse('This is totally { not json }');
console.log(json); // will be null
console.log(safe.error); // will contain SyntaxError

错误被清除为操作成功 .

json = safe.JSON.parse('{ "totally" : "json" }');
console.log(json); // { totally: "json" }
console.log(safe.error); // will be null

安全. 克赖里

safe.query可用于访问嵌入对象属性. 譬如说, 如果有嵌入对象存在,下面的代码可以丢出例外 不包含访问属性 :

var capital = data.countries.norway.capital;

这可以重写为:

var capital = safe.query(data, 'countries.norway.capital'); // returns undefined if not found

您也可以指定默认 :

var capital = safe.query(data, 'countries.norway.capital', 'oslo'); // return oslo if not found

深嵌属性的工程(用于数组访问):

var item = safe.query(data, 'key[0][3].some.fancy[45].nested.5.value');

不支持其中的“.” 属性名称 .

安全设置

safe. set 是安全的. query的补充.

var obj = { };
safe.set(obj, 'some.deep.value', 42);
console.log(obj.some.deep.value); // prints 42

如果obj不是有效的对象,它会为你创建一个

obj = safe.set(null, 'some.deep.value', 42);
console.log(obj.some.deep.value); // prints 42

如果链中的任何值不是对象,则会被替换.

var obj = { some: 43 };
safe.set(obj, 'some.deep.value', 42);
console.log(obj.some.deep.value); // prints 42; some is gone

安全设置

safe.unset 未设置对象中的属性.

var obj = { some: { deep: { value: 42 } } };
safe.unset(obj, 'some.deep.value');
console.log(obj); // prints { some: { deep: { } } }

API 密码

  • 安全呼叫( 函数调用, 值为如果错误返回)
  • 错误 - 上次函数调用错误
  • 方便(详见节点.js docs)
    • JSON.parse - 在错误中返回无效, 在成功中返回对象
    • JSON. stringify - 错误返回为无效, 成功返回为字符串
    • fs.readFileSync - 在出错时返回无效,在成功时返回字符串/缓冲
    • fs.writeFileSync - 错误返回虚假,成功返回真实
    • fs.statSync - 在错误中返回无效,在成功时返回stat对象
    • fs. sexicSync - 错误返回错误,真实/假返回成功
    • fs.mkdirSync - 错误返回错误, 成功返回真实
    • fs.unlinkSync - 错误返回虚假,成功返回真实
    • fs.renameSync - 错误返回虚假,成功返回真实
    • fs.copyFileSync - 在错误中返回虚假, 在成功时返回真实
    • fs.readdirSync - 在错误中返回无效, 在成功时返回文件数组
    • fs.utimesSync - 错误返回错误,成功返回真实
    • fs.futimesSync - 错误返回错误,成功返回真实
    • url.parse = 在错误中返回无效, 在成功时返回对象
    • 需要 - 错误返回为无效, 成功模块
    • child process.execSync - 在出错时返回无效,在成功时返回 stdio
    • child process.spawnSync - 在出错时返回无效,在成功时返回对象

版本与发布记录

@cloudron/safetydance 共发布 4 个版本,首次发布于 2026/02/18;过去 12 个月发布了 4 个版本。

版本发布日期距今
3.2.0latest2026/10/1723 天前
3.1.02026/07/044 个月前
3.0.12026/02/188 个月前
3.0.02026/02/188 个月前

关于 @cloudron/safetydance 的常见问题

@cloudron/safetydance 是什么?

节点的例外安全

如何安装 @cloudron/safetydance?

在项目目录运行 npm install @cloudron/safetydance,或使用 pnpm add / yarn add / bun add。

@cloudron/safetydance 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/cloudron__safetydance 是否存在。

@cloudron/safetydance 支持 ESM 还是 CommonJS?

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

@cloudron/safetydance 需要什么版本的 Node.js?

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

@cloudron/safetydance 可以商用吗?

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

@cloudron/safetydance 的下载量有多少?

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

@cloudron/safetydance 还在维护吗?

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