# @ailura/nestjs-hono-adapter 中文文档

规范地址：https://npmcn.com/package/%40ailura/nestjs-hono-adapter/

版本：2\.1\.0
npm 元数据更新时间：2026-10-20T11:47:48.317Z
中文译文更新时间：2026-11-06T15:40:40.924Z
软件包许可：MIT

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

原始 npm 页面：https://www.npmjs.com/package/%40ailura/nestjs-hono-adapter
原文对照：https://npmcn.com/package/%40ailura/nestjs-hono-adapter/?lang=original
项目主页：https://github.com/ailuracollective/nestjs-hono-adapter#readme
源码仓库：https://github.com/ailuracollective/nestjs-hono-adapter

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

- 包体积（解压后）：721 kB，638 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.12\.0
- 运行依赖：0 个
- peer 依赖：hono ^4\.13\.8，rxjs ^7\.8\.2，@nestjs/core \>=11 \<13，@nestjs/common \>=11 \<13，@hono/node-server ^2\.1\.1
- 首次发布：2026-09-21T13:46:54.428Z
- 最新版本发布：2026-10-20T11:47:47.919Z
- 近 30 天下载量：2866（2026-10-05 至 2026-11-03，npm 官方下载统计）
- 已发布版本数：22（近 12 个月 22 个）

## 中文简介

一个在Hono上运行应用程序的NestJS HTTP适配器.

## 安装

```sh
npm install @ailura/nestjs-hono-adapter
```

也可以使用：`pnpm add @ailura/nestjs-hono-adapter`、`yarn add @ailura/nestjs-hono-adapter`、`bun add @ailura/nestjs-hono-adapter`

## README

# @ailura/nestjs-hono-适应器

[![CI](https://github.com/ailuracollective/nestjs-hono-adapter/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/ailuracollective/nestjs-hono-adapter/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/@ailura/nestjs-hono-adapter.svg)](https://www.npmjs.com/package/@ailura/nestjs-hono-adapter) [![npm downloads](https://img.shields.io/npm/dm/@ailura/nestjs-hono-adapter.svg)](https://www.npmjs.com/package/@ailura/nestjs-hono-adapter) [![bundle size](https://img.shields.io/badge/bundle%20size-%E2%89%A416.5kb-brightgreen)](https://github.com/ailuracollective/nestjs-hono-adapter/blob/main/packages/core/.size-limit.json) [![Socket Badge](https://badge.socket.dev/npm/package/@ailura/nestjs-hono-adapter)](https://socket.dev/npm/package/@ailura/nestjs-hono-adapter) [![Snyk security](https://snyk.io/test/github/ailuracollective/nestjs-hono-adapter/badge.svg?targetFile=package.json)](https://snyk.io/test/github/ailuracollective/nestjs-hono-adapter?targetFile=package.json) [![codecov](https://codecov.io/gh/ailuracollective/nestjs-hono-adapter/branch/main/graph/badge.svg?component=core)](https://codecov.io/gh/ailuracollective/nestjs-hono-adapter) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/ailuracollective/nestjs-hono-adapter/blob/main/LICENSE)

运行 NestJS 应用程序的 HTTP 适配器 [浩诺](https://hono.dev/),下面没有快车或快车。 核心为运行时间中和; a **运输** 决定如何提供: `bunServer()` (Bun自己的服务器,默认), `nodeServer()` 页:1 `@hono/node-server`,或 `fetchServer()` 对于服务于网络的主机 `Request`编号 :`Response`。 。 。 .

**问题**:雀巢没有正式的Hono适配器. 两个已公布的替代品针对"巢穴"11,回答不正确——一个将成功状态交还给一个丢弃的处理者,另一个将每回回复写出两次.

**解决方案**: 本套件执行 Nest 11/12 `AbstractHttpAdapter` 直接在Hono上签约:线路注册于Hono申请,Hono's Web `Request`编号 :`Response` 翻译为Nest读取的对象.

## 安装

```sh
bun add @ailura/nestjs-hono-adapter hono
```

`@nestjs/common`, (中文(简体) ), `@nestjs/core`, (中文(简体) ), `hono`, (中文(简体) ), `rxjs` 财务报告和审定财务报表 `@hono/node-server` 是同行,所以应用程序决定它们的版本. `@hono/node-server` 是可选的:只有 `./node-server` 运输工具到达它,一个机舱或调取部署从不装载它。 使用 `npm install` 或者说 `pnpm add` 替换 `bun add` 视需要而定.

可选能力生活在自己的一个包里,有一个单一的入站点,所以导入它不会装入其他任何:

| 软件包 | 对于 | 安装 |
| --- | --- | --- |
| `@ailura/nestjs-platform-hono-multipart` | 上传 | `busboy` |

WebSockets 不是一种能力而是一种 **兼容桥**数字 : `@ailura/nestjs-platform-hono-ws` 适应巢穴自己的 `@nestjs/platform-ws` `WsAdapter` 到Hono,所以你安装了软件包,不写进 `app.useWebSocketAdapter(new WsAdapter(app))` 是整条线 袜子。 IO是相同的,通过 `@ailura/nestjs-platform-hono-socket-io` 和库存 `@nestjs/platform-socket.io` `IoAdapter`。见 [文档/兼容性](https://npmcn.com/package/docs/compatibility.md)。 。 。 .

一个 socket.io网关由Bun Transport自己的服务器提供,它可以捆绑一个引擎,由节点 Transport的 `http.Server` 否则; 接取运输既无,也因姓名而被拒绝.

## 配套软件包

| 软件包 | 它会做什么 | 何时安装 |
| --- | --- | --- |
| [`@ailura/nestjs-hono-adapter`](https://www.npmjs.com/package/@ailura/nestjs-hono-adapter) | 适配器本身 | 永远 |
| [`@ailura/nestjs-platform-hono-multipart`](https://www.npmjs.com/package/@ailura/nestjs-platform-hono-multipart) | 多段上传 `busboy` | 上传路线 |
| [`@ailura/nestjs-platform-hono-graphql`](https://www.npmjs.com/package/@ailura/nestjs-platform-hono-graphql) | `@nestjs/apollo` `ApolloDriver` 装入Hono | 图QL 驱动程序 |
| [`@ailura/nestjs-platform-hono-ws`](https://www.npmjs.com/package/@ailura/nestjs-platform-hono-ws) | `@nestjs/platform-ws` `WsAdapter` 装入Hono | 网络安全网关 |
| [`@ailura/nestjs-platform-hono-socket-io`](https://www.npmjs.com/package/@ailura/nestjs-platform-hono-socket-io) | `@nestjs/platform-socket.io` `IoAdapter` 装入Hono | 袜子。 IO 网关 |
| [`@ailura/nestjs-platform-hono-serve-static`](https://www.npmjs.com/package/@ailura/nestjs-platform-hono-serve-static) | 配有Hono的静态服务 | 静态资产 |

在这个仓库里:

-   [文件/建筑图](https://npmcn.com/package/docs/architecture.md) ——层地图和分界线
-   [文档/兼容性](https://npmcn.com/package/docs/compatibility.md) ——五座桥梁及其接缝
-   [文件/部署](https://npmcn.com/package/docs/deployment.md) — Bun, 节点和获取主机
-   [文件/平台-偏差](https://npmcn.com/package/docs/platform-differences.md) ——与快快快快快等同

### 迁移到 2.x

五事破了追踪的部署 `@ailura/nestjs-hono-adapter@1.4.1`数字 : `./ws` 移动,默认运输 不再是节点之一, `HonoWsAdapter` 安全头被默认关闭, 包只使用无害环境管理.

`./ws` 编辑 `HonoWsAdapter` 出口不见了 WebSockets 由股票服务 [`@nestjs/platform-ws`](https://www.npmjs.com/package/@nestjs/platform-ws) `WsAdapter`,装入Hono旁 `@ailura/nestjs-platform-hono-ws`; 安装兼容区域发现的软件包, 所以部署时不写入该软件包, 代之以命名库存类 `@nestjs/platform-ws` 替换 `@hono/node-ws`。 。 。 .

| 旧 | 新设 |
| --- | --- |
| `@ailura/nestjs-hono-adapter/ws` | `@ailura/nestjs-platform-hono-ws`,单独安装 |
| `new HonoWsAdapter(app)` | `new WsAdapter(app)` 从 `@nestjs/platform-ws` |

只有网关 `path` 遵守;电线协议是 `platform-ws`属于自己的.

零配置的靴子现在通过 `bunServer()` 在那里服务过 `@hono/node-server`;在节点上部署明确命名运输([使用](https://npmcn.com/package/%40ailura/nestjs-hono-adapter/#readme-use)) (中文(简体) ).

`ServerAdapterOptions.overrideGlobalObjects` 不见了 `nodeServer()` 带着它,默认为 `true`, 最快的路径和隐含的节点运输行为 `Request` 财务报告和审定财务报表 `Response` 需要全过程且没有恢复, 因此要让全局独有的用户按名问: `nodeServer({ overrideGlobalObjects: false })`。 。 。 .

`secureHeaders` 默认为 `true` 现在默认为 `false`; 依赖于默认集的部署 `secureHeaders: true`。 。 。 .

Bun运输解决了 `hono/bun` 在顶层等待,所以根入点仍然在节点上进口,这使得一揽子无害环境管理仅: `require()` 抛出, `import` 在Node和Bun工作过.

`./multipart` 财务报告和审定财务报表 `./socket-io` 添加到 `main` 在1.4.1之后,而且从未发表过,所以没有人必须为他们迁移 `main` 并导入一个上方安装匹配包.

## 使用

```ts
import { NestFactory } from '@nestjs/core';
import { ServerAdapter } from '@ailura/nestjs-hono-adapter';
import { bunServer } from '@ailura/nestjs-hono-adapter/bun-server';

import { AppModule } from './app.module.ts';

const app = await NestFactory.create(
  AppModule,
  new ServerAdapter({
    bodyLimit: 2 * 1024 * 1024,
    transport: bunServer(),
    trustProxy: true,
  }),
);
app.enableCors({
  credentials: true,
  origin: ['https://app.example.com'],
});
await app.listen(3000);
```

`new ServerAdapter()` 没有 `transport` 通过Bun自己的服务器服务。 在节点命名上的部署:

```ts
import { nodeServer } from '@ailura/nestjs-hono-adapter/node-server';

new ServerAdapter({ transport: nodeServer() });
```

`nodeServer()` 带 `autoCleanupIncoming` (默认) `true`),它耗尽了身体从未被阅读的请求,以及 `overrideGlobalObjects` (默认) `true`),它问 `@hono/node-server` 以取代进程 `Request` 财务报告和审定财务报表 `Response` 其较轻等级——最快的道路,以及全过程;通过 `false` 远离全球。 两个都只够 `@hono/node-server`,所以他们不会改变任何部署 服务通过 `bunServer()`。 。 。 .

在取回主机(Cloudflare Workers)上,Vercel函数或德诺函数(Deno),运输不取任何港口,部署输出操作器:

```ts
import { fetchHandler, fetchServer } from '@ailura/nestjs-hono-adapter/fetch';

const adapter = new ServerAdapter({ transport: fetchServer() });
const app = await NestFactory.create(AppModule, adapter);
await app.init();

export default { fetch: fetchHandler(adapter.getHono()) };
```

`listen()` 在获取服务器上被拒绝,将错误传递到调用中,或者在不给出时扔出。 获取处理器默认没有客户端地址并忽略 `cf-connecting-ip`; 通过 `fetchHandler(app, { clientAddress })` 并有一个解析器 一个信任的,主机提供地址, 并读取一个头 在那里,只有当主机保证客户端不能伪造它. `x-forwarded-for` 静态用品 `ip` 何时 `trustProxy` 信任代理服务器 。 见 [获取主机](https://github.com/ailuracollective/nestjs-hono-adapter/blob/main/docs/deployment.md#fetch-hosts)。 。 。 .

`getType()` 答题 `hono`,价值生态系统包分支打开.

进行中测试时,请拨 `await app.init()` 在此之前 `app.inject()`。字符串目标接受相对路径和绝对URL; `query` 添加到已有查询中 。 获取和头部忽略 `payload`编号 :`body`;其他方法作为请求体发送.

`setOnRequestHook()` 当钩子呼叫时继续请求 `done` 或它返回的许诺/可确认的决断,以先发生者为准. `setOnResponseHook()` 当链子解决时运行, 包括当请求的钩子扔出或拒绝时; 它等待最多1秒钟的响应-hook工作后才会释放响应, 之后的拒绝仍然被记录. 见 [仪器钩](https://github.com/ailuracollective/nestjs-hono-adapter/blob/main/docs/platform-differences.md#instrumentation-hooks)。 。 。 .

## 选项

`app.set('views', directory)` 接受字符串或字符串数组,按顺序搜索; `app.set('view engine', extension)` 接受字符串。 查看数据组合 `setViewEngine({ defaultContext })`, (中文(简体) ), `setLocal()` 值和处理器数据,按此顺序保存本地数据,包括密钥,例如 `__proto__`。 。 。 .

| 选项 | 类型 | 默认 | 效果 |
| --- | --- | --- | --- |
| `bodyLimit` | `number` | `1 MiB` | 最大非多元请求正文,以字节表示; `0` 删除限制。 多段解析使用上传路由 `limits` 当启用多段包时; 仍然检查已声明的长度. |
| `rawBody` | `boolean` | `false` | 保留读取的字节 `NestRequest.rawBody` |
| `secureHeaders` | `boolean | object` | `false` | 安装 `hono/secure-headers`,带有默认值或给定选项;默认关闭 |
| `transport` | `Transport` | —— 说 | 运行时间 : `bunServer()`, (中文(简体) ), `nodeServer()` 或者说 `fetchServer()` |
| `trustProxy` | `boolean | number | string[]` | `false` | 读取 `x-forwarded-proto`, (中文(简体) ), `x-forwarded-for` 财务报告和审定财务报表 `x-forwarded-host` |
| `views` | `object` | —— 说 | 发动机 a `@Render()` 处理器制作,模板从何处读取 |

`app.useBodyParser()` 接受 `json`, (中文(简体) ), `urlencoded`, (中文(简体) ), `text` 财务报告和审定财务报表 `raw`; 不支持的名称被拒绝 。 解析遵循请求的内容类型,以及 `limit` 适用于每个解析器和路由; 省略 `limit` 仍然允许解析并应用生体设置,使现有的尺寸限制保持不变.

## 文档

存储库的架构、部署、对等和API参考系统 [`docs/`](https://github.com/ailuracollective/nestjs-hono-adapter/tree/main/docs) 目录.

## 所需资源

-   Bun 1.2+(工具链,以及默认运输的运行时间),或节点22.12+.
-   `@hono/node-server`,哪个 `nodeServer()` 服务通过;它是可选的对等端,默认的传输是Bun自己的服务器.
-   巢11号或巢12号.
-   呼诺 4.

## 许可证

麻省理工学院

## 常见问题

### @ailura/nestjs-hono-adapter 是什么？

一个在Hono上运行应用程序的NestJS HTTP适配器\.

### 如何安装 @ailura/nestjs-hono-adapter？

在项目目录运行 npm install @ailura/nestjs-hono-adapter，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：hono（^4\.13\.8）、rxjs（^7\.8\.2）、@nestjs/core（\>=11 \<13）、@nestjs/common（\>=11 \<13）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @ailura/nestjs-hono-adapter 支持 TypeScript 吗？

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

### @ailura/nestjs-hono-adapter 支持 ESM 还是 CommonJS？

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

### @ailura/nestjs-hono-adapter 需要什么版本的 Node\.js？

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

### @ailura/nestjs-hono-adapter 可以商用吗？

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

### @ailura/nestjs-hono-adapter 的下载量有多少？

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

### @ailura/nestjs-hono-adapter 还在维护吗？

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

