@ailura/nestjs-hono-adapter

中文文档
2.1.0发布于 2026/10/20MITTypeScriptES Module零依赖构建来源已验证近 30 天下载 2866

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

中文使用文档
文档目录8 节
  1. 安装
  2. 配套软件包
  3. 迁移到 2.x
  4. 使用
  5. 选项
  6. 文档
  7. 所需资源
  8. 许可证

@ailura/nestjs-hono-适应器

CI npm version npm downloads bundle size Socket Badge Snyk security codecov GitHub license

运行 NestJS 应用程序的 HTTP 适配器 浩诺,下面没有快车或快车。 核心为运行时间中和; 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读取的对象.

安装

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。见 文档/兼容性。 。 。 .

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

配套软件包

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

在这个仓库里:

迁移到 2.x

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

./ws 编辑 HonoWsAdapter 出口不见了 WebSockets 由股票服务 @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;在节点上部署明确命名运输(使用) (中文(简体) ).

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 并导入一个上方安装匹配包.

使用

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自己的服务器服务。 在节点命名上的部署:

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),运输不取任何港口,部署输出操作器:

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 信任代理服务器 。 见 获取主机。 。 。 .

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

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

setOnRequestHook() 当钩子呼叫时继续请求 done 或它返回的许诺/可确认的决断,以先发生者为准. setOnResponseHook() 当链子解决时运行, 包括当请求的钩子扔出或拒绝时; 它等待最多1秒钟的响应-hook工作后才会释放响应, 之后的拒绝仍然被记录. 见 仪器钩。 。 。 .

选项

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

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

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

文档

存储库的架构、部署、对等和API参考系统 docs/ 目录.

所需资源

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

许可证

麻省理工学院

版本与发布记录

@ailura/nestjs-hono-adapter 共发布 22 个版本,首次发布于 2026/09/21;过去 12 个月发布了 22 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.1.0latest2026/10/2018 天前
2.0.22026/10/1721 天前
2.0.12026/10/1622 天前
2.0.02026/10/1622 天前
3.0.02026/10/1622 天前
2.0.0-beta.12026/10/1622 天前

关于 @ailura/nestjs-hono-adapter 的常见问题

@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 和提交记录判断。