# @domoinc/ryuu-proxy 中文文档

规范地址：https://npmcn.com/package/%40domoinc/ryuu-proxy/

版本：5\.1\.2
npm 元数据更新时间：2026-08-24T19:02:06.168Z
中文译文更新时间：2026-11-12T15:47:05.333Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40domoinc/ryuu-proxy
原文对照：https://npmcn.com/package/%40domoinc/ryuu-proxy/?lang=original
项目主页：https://github.com/DomoApps/ryuu-proxy#readme
源码仓库：https://github.com/DomoApps/ryuu-proxy

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

- 包体积（解压后）：39.5 kB，10 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：3 个
- peer 依赖：express ^4\.17\.0 \|\| ^5\.0\.0
- 首次发布：2017-07-27T22:07:50.717Z
- 最新版本发布：2026-08-24T19:02:05.912Z
- 近 30 天下载量：5944（2026-10-13 至 2026-11-11，npm 官方下载统计）
- 已发布版本数：71（近 12 个月 6 个）

## 中文简介

一个为本地 domo 应用程序开发提供代理软件的中间软件

## 安装

```sh
npm install @domoinc/ryuu-proxy
```

也可以使用：`pnpm add @domoinc/ryuu-proxy`、`yarn add @domoinc/ryuu-proxy`、`bun add @domoinc/ryuu-proxy`

## README

# @domoinc/ ryu- proxy

[![npm version](https://img.shields.io/npm/v/@domoinc/ryuu-proxy.svg?style=flat-square)](https://www.npmjs.org/package/@domoinc/ryuu-proxy) [![install size](https://img.shields.io/badge/dynamic/json?url=https://packagephobia.com/v2/api.json?p=@domoinc/ryuu-proxy&query=$.install.pretty&label=install%20size&style=flat-square)](https://packagephobia.com/result?p=@domoinc/ryuu-proxy) [![npm downloads](https://img.shields.io/npm/dm/@domoinc/ryuu-proxy.svg?style=flat-square)](https://npm-stat.com/charts.html?package=@domoinc/ryuu-proxy) [![types](https://img.shields.io/npm/types/@domoinc/ryuu-proxy.svg?style=flat-square)](https://www.npmjs.org/package/@domoinc/ryuu-proxy) [![license](https://img.shields.io/npm/l/@domoinc/ryuu-proxy.svg?style=flat-square)](https://github.com/DomoApps/ryuu-proxy/blob/master/LICENSE) [![Known Vulnerabilities](https://snyk.io/advisor/npm-package/@domoinc/ryuu-proxy/badge.svg)](https://snyk.io/advisor/npm-package/@domoinc/ryuu-proxy)

本地的中间软件 [Domo 应用程序](https://developer.domo.com/docs/dev-studio-guides/overview) 发展。 它截取到对 Domo 数据的呼叫/ API 端点和代理向您的 Domo 实例认证的请求, 这样您就可以根据本地 dev 服务器的真实数据进行开发 .

## 目录

-   [特征](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-features)
-   [所需资源](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-requirements)
-   [安装](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-installation)
-   [使用量](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-usage)
    -   [配置](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-configuration)
    -   [快递/ 连接](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-with-express--connect)
    -   [其他框架](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-with-other-frameworks)
    -   [处理错误](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-error-handling)
-   [HTTP 代理支持](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-http-proxy-support)
-   [获取代理ID](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-getting-a-proxyid-advanced)
-   [捐款](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-contributing)
-   [许可证](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-license)

## 特征

-   多莫API流量: `/data/v{d}`, (中文(简体) ), `/sql/v{d}`, (中文(简体) ), `/dql/v{d}`, (中文(简体) ), `/domo/.../v{d}`, (中文(简体) ), `/api/...`
-   滴入快件 / 通过连接中件 `proxy.express()`
-   框架不可知性 `proxy.stream(req)` 用于 Koa, 节点 `http`,快递等.
-   处理多段/窗体数据上传( 文件流通过 [`busboy`](https://github.com/mscdex/busboy)(中文(简体) )
-   使用 DQL 、 回写或 OAuth 特性的应用程序的 OAuth 访问/更新令牌
-   从您现有的 Domo CLI 登录会话中读取 auth —— 没有额外的配置
-   有类型脚本的船舶
-   无害环境管理一揽子措施

## 所需资源

-   节点.js **18岁以上**
-   活跃的多摩 CLI 会话( O) :`domo login`()——见 [`@ryuu`](https://www.npmjs.com/package/ryuu)
-   一个项目 `manifest.json` 至少出版一次的(`domo publish`(中文(简体) )
-   端点 : `express ^4.17.0 || ^5.0.0` (仅在使用时需要) `proxy.express()`(中文(简体) )

## 安装

```bash
pnpm add -D @domoinc/ryuu-proxy
# or
npm install --save-dev @domoinc/ryuu-proxy
# or
yarn add -D @domoinc/ryuu-proxy
```

## 使用量

此库会从您的 Domo CLI 调用上次登录会话 。 如果该会话不再活动或不存在,代理将失效. 在启动您的 dev 服务器前登录 :

```bash
domo login
```

### 配置

```js
import { Proxy } from '@domoinc/ryuu-proxy';
import manifest from './path/to/app/manifest.json' with { type: 'json' };

const proxy = new Proxy({ manifest });
```

这个 `Proxy` 构造器接受一个配置对象 .

#### 需求

-   `manifest` - 解析您项目的内容 `manifest.json`。 。 。 . `domo publish` 一定至少运行过一次 所以名单有 `id`。 。 。 .

#### 可选

-   `manifest.proxyId` ——对于使用DQL,回写,或OAuth的应用程序需要. 如果你不确定, 你可能不需要它。 见 [获取代理ID](https://npmcn.com/package/%40domoinc/ryuu-proxy/#readme-getting-a-proxyid-advanced)。 。 。 .

### 与 [快递](https://expressjs.com/) 编号 : [连接](https://github.com/senchalabs/connect)

```js
import express from 'express';

const app = express();
app.use(proxy.express());
```

### 与其他框架一起

关于其他框架, `stream()` 返回可读流,您可以返回到您的响应。 它接受标准节点 [来信](https://nodejs.org/api/http.html#http_class_http_incomingmessage),而大多数框架延伸.

```js
// koa
app.use(async (ctx, next) => {
  await proxy
    .stream(ctx.req)
    .then((data) => (ctx.body = ctx.req.pipe(data)))
    .catch(next);
});
```

```js
// express
app.use((req, res, next) => {
  proxy
    .stream(req)
    .then((stream) => stream.pipe(res))
    .catch(() => next());
});
```

```js
// node http
import http from 'node:http';

const server = http.createServer((req, res) => {
  if (req.url === '/') {
    loadHomePage(res);
  } else {
    proxy.stream(req).then((stream) => stream.pipe(res));
  }
});
```

### 处理错误

忽略错误导致代理失败, 请求返回 `404`。为了揭露错误,捕获 `DomoException` 并转发状态 :

```js
// koa
app.use(async (ctx, next) => {
  await proxy
    .stream(ctx.req)
    .then((data) => (ctx.body = ctx.req.pipe(data)))
    .catch((err) => {
      if (err.name === 'DomoException') {
        ctx.status = err.status || err.statusCode || 500;
        ctx.body = err;
      } else {
        next();
      }
    });
});
```

```js
// express / connect
app.use((req, res, next) => {
  proxy
    .stream(req)
    .then((stream) => stream.pipe(res))
    .catch((err) => {
      if (err.name === 'DomoException') {
        res.status(err.status || err.statusCode || 500).json(err);
      } else {
        next();
      }
    });
});
```

```js
// node http
const server = http.createServer((req, res) => {
  if (req.url === '/') {
    loadHomePage();
  } else {
    proxy
      .stream(req)
      .then((stream) => stream.pipe(res))
      .catch((err) => {
        if (err.name === 'DomoException') {
          res.writeHead(err.status || err.statusCode || 500);
          res.end(JSON.stringify(err));
        }
      });
  }
});
```

`DomoException` 形状 :

| 外地 | 说明 |
| --- | --- |
| `name` | 永远 `"DomoException"` |
| `status` 编号 : `statusCode` | HTTP 状态代码 |
| `statusMessage` | 错误描述 |

## HTTP 代理支持

如果您坐在公司 HTTP 代理后, 请设置以下环境变量 . `REACT_APP_`\- 前置变体也因Create React App项目而获得荣誉.

| 变量 | 目的 |
| --- | --- |
| `PROXY_HOST` 编号 : `REACT_APP_PROXY_HOST` | 代理主机名称 |
| `PROXY_PORT` 编号 : `REACT_APP_PROXY_PORT` | 代理端口 |
| `PROXY_USERNAME` 编号 : `REACT_APP_PROXY_USERNAME` | 基本认证用户名( 可选) |
| `PROXY_PASSWORD` 编号 : `REACT_APP_PROXY_PASSWORD` | 基本验证密码( 可选的) |

## 获取代理ID( 高级)

使用 DQL 、 回写或 OAuth 特性的应用程序必须提供 `proxyId` 在代理配置中,这样代理可以正确路由请求。 A 类 `proxyId` 属于形式 `XXXXXXXX-XXXX-4XXX-XXXX-XXXXXXXXXXXX`为了找到它:

1.  确保应用软件至少发布一次 `domo publish`。 。 。 .
2.  从您的应用设计中发布新卡, 或者打开从中创建的现有卡 .
3.  右键单击牌并选择 **检查元素**。 。 。 .
4.  寻找 `<iframe>` 包含您的应用程序。 它的URL看起来像 `//{HASH}.domoapps.prodX.domo.com?userId=...`。 。 。 .
5.  复制中间的散列 `//` 财务报告和审定财务报表 `.domoapps` - 这是你的 `proxyId`。 。 。 .

`proxyId`给卡片打领带 如果删除从你提取的ID的卡片,则需要从同一应用设计所创造的另一张卡片中取出一个新的.

## 相关软件包

-   [`ryuu`](https://www.npmjs.com/package/ryuu) ——多摩CLI(多摩CLI)`domo login`, (中文(简体) ), `domo publish`页:1
-   [`ryuu-client`](https://www.npmjs.com/package/ryuu-client) ——基础多摩API客户端

## 捐款

### 工作流程

1.  创建分支( 例如) . `DOMO-XXXXXX`(中文(简体) )
2.  作出和作出修改
3.  测试——可选地发布用于集成测试的α/β
4.  打开拉动请求
5.  合并到 `master`,按住版本并发布到 npm

### 脚本

| 脚本 | 说明 |
| --- | --- |
| `pnpm run build` | 编译类型脚本到 `dist/` |
| `pnpm test` | 运行测试套件( Vest) |
| `pnpm run test:watch` | 以监视模式运行 vitest |
| `pnpm run test:coverage` | 进行覆盖测试 |
| `pnpm run format` | 使用 Pretier 格式源 |
| `pnpm run release:production` | 构建并发布到 npm |
| `pnpm run release:beta` | 构建和出版 `beta` 标签 |
| `pnpm run release:alpha` | 构建和出版 `alpha` 标签 |

### 版本

这个项目使用 [标准版本](https://github.com/conventional-changelog/standard-version) 由常规承诺确定版本起落.

## 许可证

[麻省理工学院](https://npmcn.com/package/%40domoinc/ryuu-proxy/LICENSE)

## 常见问题

### @domoinc/ryuu-proxy 是什么？

一个为本地 domo 应用程序开发提供代理软件的中间软件

### 如何安装 @domoinc/ryuu-proxy？

在项目目录运行 npm install @domoinc/ryuu-proxy，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：express（^4\.17\.0 \|\| ^5\.0\.0）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @domoinc/ryuu-proxy 支持 TypeScript 吗？

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

### @domoinc/ryuu-proxy 支持 ESM 还是 CommonJS？

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

### @domoinc/ryuu-proxy 可以商用吗？

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

### @domoinc/ryuu-proxy 的下载量有多少？

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

### @domoinc/ryuu-proxy 还在维护吗？

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

