# @cloudron/safetydance 中文文档

规范地址：https://npmcn.com/package/%40cloudron/safetydance/

版本：3\.2\.0
npm 元数据更新时间：2026-10-17T10:00:04.872Z
中文译文更新时间：2026-11-10T03:27:59.710Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40cloudron/safetydance
原文对照：https://npmcn.com/package/%40cloudron/safetydance/?lang=original
源码仓库：https://git.cloudron.io:6000/utils/safetydance

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：37.7 kB，6 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>= 24\.0\.0
- 运行依赖：0 个
- 首次发布：2026-02-17T21:20:04.880Z
- 最新版本发布：2026-10-17T10:00:04.577Z
- 近 30 天下载量：5798（2026-10-10 至 2026-11-08，npm 官方下载统计）
- 已发布版本数：4（近 12 个月 4 个）

## 中文简介

节点的例外安全

## 安装

```sh
npm install @cloudron/safetydance
```

也可以使用：`pnpm add @cloudron/safetydance`、`yarn add @cloudron/safetydance`、`bun add @cloudron/safetydance`

## README

# 安全舞蹈

这个节点.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 是什么？

节点的例外安全

### 如何安装 @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 和提交记录判断。

