# @expo/schemer 中文文档

规范地址：https://npmcn.com/package/%40expo/schemer/

版本：2\.4\.3
npm 元数据更新时间：2026-10-31T10:30:11.718Z
中文译文更新时间：2026-11-14T05:28:43.987Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40expo/schemer
原文对照：https://npmcn.com/package/%40expo/schemer/?lang=original
项目主页：https://github.com/expo/expo/tree/main/packages/@expo/schemer#readme
源码仓库：https://github.com/expo/expo

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

- 包体积（解压后）：26.6 kB，9 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：2 个
- 首次发布：2017-07-13T21:29:32.209Z
- 最新版本发布：2026-10-31T10:30:11.418Z
- 近 30 天下载量：119944（2026-10-14 至 2026-11-12，npm 官方下载统计）
- 已发布版本数：260（近 12 个月 69 个）

## 中文简介

世博会中央计划验证库

## 安装

```sh
npm install @expo/schemer
```

也可以使用：`pnpm add @expo/schemer`、`yarn add @expo/schemer`、`bun add @expo/schemer`

## README

# 欢迎光临  
`@expo/schemer`

一个用于博览会的Schema验证库.

详情如下:

-   [https://paper.tropbox.com/doc/Expo-Schema-Validation-Library-mQU07rRejSnEe4Vf5dkcS 互联网档案馆的存檔,存档日期2014-12-11](https://paper.dropbox.com/doc/Expo-Schema-Validation-Library-mQU07rRejSnEe4Vf5dkcS)

## 使用量

### 使用 XDL

```javascript
import { getConfig } from '@expo/config';
import Schemer from '@expo/schemer';

const { exp } = getConfig(projectRoot);
const schema = await getSchemaAsync(exp.sdkVersion);
const validator = new Schemer(require('schema.json'));

validator.validateName('Wilson Zhao');
validator.validateAssets(exp);
```

### 只有外观验证

```javascript
const validator = new Schemer(require('schema.json'));
try {
  await validator.validateSchemaAsync(require('data.json'));
} catch (e) {
  console.error(e);
}
```

### 验证财产

```javascript
const validator = new Schemer(require('schema.json'));
await validator.validateName('Wilson Zhao');
```

## 说明

谋划者使用自定义的 JSON Schema 来验证各种数据.

在引擎盖下,它使用Ajv([https://github.com/epoberezkin/ajv (英语)](https://github.com/epoberezkin/ajv))作为基础schema验证的Javascript引擎. 然而,每个子schema也包含自定义元标记,可以被解析以进一步"人工"验证. 目前,计划员支持对资产进行人工验证:

```javascript
{
  meta:
  {
    asset,
    contentType, //mime type
    dimensions: {width, height},
    square,

    // For custom error messages and docs
    regexHuman,
    autogenerated,
    notHuman
  }
}
```

所有错误均可在 `this.errors`,该函数将 Ajv JSON Schema 错误和自定义元/资产验证错误合并成一个统一的数组 `ValidationErrors`。 。 。 . 如果存在错误,则在每个公交功能的末尾投出错误.

所有的公交功能都是同源函数,因为资产验证必须是同源函数(访问文件系统或提出网络请求).

## API 密码

#### 新方案人( Object JSON Schema, Object 选项) - > 对象

#### .validateSchemaAsync(对象数据) - > 答应

返回一个决心 `true` 如果数据符合计划。 否则,它拒绝并扔出一系列 `ValidationError`编号.

#### .validate AssetsAsync(对象数据) - > 答应

返回一个决心 `true` 如果数据符合在每个元标记中发现的额外验证步骤。 例如,它会下载一个资产并读取文件头来查看它是否属于某个内容类型. 否则,它拒绝并扔出一系列 `ValidationError`编号.

#### .validate All(对象数据) - > 答应

运行两者 `.validateSchemaAsync` 财务报告和审定财务报表 `.validateAssetsAsync`。 。 。 . 返回一个决心 `true` 如果数据通过两个函数。 否则,它拒绝并扔出一系列 `ValidationError`编号.

#### .validate Property(平面平面,对象数据) - > 答应

提取给定字段路径的子Schema并对照它验证数据。 同时检查元标记. 返回一个决心 `true` 如果数据符合子schema。 否则,它拒绝并扔出一系列 `ValidationError`编号.

#### 错误

包含一组验证错误

#### 新验证 Error ({errorCode, 字段Path, 消息, 数据, meta}) - > 对象

## 常见问题

### @expo/schemer 是什么？

世博会中央计划验证库

### 如何安装 @expo/schemer？

在项目目录运行 npm install @expo/schemer，或使用 pnpm add / yarn add / bun add。

### @expo/schemer 支持 TypeScript 吗？

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

### @expo/schemer 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @expo/schemer 可以商用吗？

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

### @expo/schemer 的下载量有多少？

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

### @expo/schemer 还在维护吗？

最新版本 2\.4\.3 发布于 2026/10/31（13 天前）；至今共发布 260 个版本，其中过去 12 个月发布了 69 个；首次发布于 2017/07/14。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

