# @arcjet/transport 中文文档

规范地址：https://npmcn.com/package/%40arcjet/transport/

版本：1\.15\.0
npm 元数据更新时间：2026-10-28T18:46:35.029Z
中文译文更新时间：2026-11-06T14:44:05.660Z
软件包许可：Apache-2\.0

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

原始 npm 页面：https://www.npmjs.com/package/%40arcjet/transport
原文对照：https://npmcn.com/package/%40arcjet/transport/?lang=original
项目主页：https://arcjet.com/
源码仓库：https://github.com/arcjet/arcjet-js

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

- 包体积（解压后）：58.5 kB，21 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- Node.js 要求：\>=22\.21\.0 \<23 \|\| \>=24\.5\.0
- 运行依赖：6 个
- 首次发布：2024-08-05T22:54:03.595Z
- 最新版本发布：2026-10-28T18:46:33.428Z
- 近 30 天下载量：333869（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：58（近 12 个月 30 个）

## 中文简介

Arcjet协议的运输机制

## 安装

```sh
npm install @arcjet/transport
```

也可以使用：`pnpm add @arcjet/transport`、`yarn add @arcjet/transport`、`bun add @arcjet/transport`

## README

[![Arcjet Logo](https://arcjet.com/logo/arcjet-light-lockup-voyage-horizontal.svg)](https://arcjet.com/)

# `@arcjet/transport`

[![npm badge](https://img.shields.io/npm/v/%40arcjet%2Ftransport?style=flat-square&label=%E2%9C%A6Aj&labelColor=ECE6F0&color=ECE6F0)](https://www.npmjs.com/package/@arcjet/transport)

运输机制 [弧喷](https://arcjet.com/) 协议.

-   [npm 软件包 (`@arcjet/transport`(中文(简体) )](https://www.npmjs.com/package/@arcjet/transport)
-   [GitHub 源代码 (`transport/` 内 `arcjet/arcjet-js`(中文(简体) )](https://github.com/arcjet/arcjet-js/tree/main/transport)

## 这是什么?

这个包裹提供了一种与我们的协议交谈的方式.

## 我什么时候用这个?

这是内部的Arcjet包件,不为公众使用而设计. 看我们的 [_开始吧_ 指南](https://docs.arcjet.com/get-started) 如何使用Arcjet 在您的 应用.

## 安装

这套方案只是无害环境管理. 在 Node.js 用 npm 安装 :

```sh
npm install @arcjet/transport
```

## 节点.js 版本支持

此软件包需要 `>=22.21.0 <23 || >=24.5.0`。代理支持依赖于 节点.js HTTP 代理代理的内置代理支持,该代理支持仅可用于 节点.js `>=22.21.0` 在24号线上, `>=24.5.0`. Node.js 20是寿终正寝 和节点23不支持。 任何人追踪一个活动 LTS 释放 不受影响.

因为每个Arcjet SDK都依赖于这个软件包,所以适用同样的要求 穿过Arcjet SDK.

## 使用

```ts
import { createTransport } from "@arcjet/transport";

const transport = createTransport("https://decide.arcjet.com");
// This can now be passed to `createClient` from `@arcjet/protocol`.
```

## API 密码

此软件包导出标识符 [`createTransport`](https://npmcn.com/package/%40arcjet/transport/#readme-createtransportbaseurl-options)。 。 。 . 没有默认导出 .

无条件的子路径 `@arcjet/transport/http2` 出口 [`createHttp2Transport`](https://npmcn.com/package/%40arcjet/transport/#readme-createhttp2transportbaseurl-http2sessionoptions) 给那些需要 无论软件包的运行时间导出条件如何,节点 HTTP/2 连接路径 (使用时间: `@arcjet/guard` 在邦顿.

此套件导出 [类型脚本](https://www.typescriptlang.org/) 类型 [`ProxyEnvironment`](https://npmcn.com/package/%40arcjet/transport/#readme-proxyenvironment), (中文(简体) ), [`TransportLogger`](https://npmcn.com/package/%40arcjet/transport/#readme-transportlogger),以及 [`TransportOptions`](https://npmcn.com/package/%40arcjet/transport/#readme-transportoptions)。 。 。 .

### `createTransport(baseUrl[, options])`

创建可与Arcjet API交谈的传输工具。 它在节点上使用 `@connectrpc/connect-node` 超过HTTP/2; Bun, Deno, 单独的切入点, 边光,和 `workerd` 使用情况 `@connectrpc/connect-web` 换句话说 这太瘦了 包起来 [`createConnectTransport`](https://connectrpc.com/docs/web/choosing-a-protocol/)。 。 。 .

直接 HTTP/2会话(和 HTTP/2-over-)`CONNECT` 何时 `proxyHttpVersion` 实值 `"2"`)使PING能够保持活动状态,并连续回收连接 截止日期失败, 匹配 Guard 启用的恢复行为 [6137号](https://github.com/arcjet/arcjet-js/pull/6137)。 。 。 .

### `createHttp2Transport(baseUrl[, http2SessionOptions])`

创建一个直接的 HTTP/2 连接传输 与 PING 保持- 恒定和 基于最后期限的连接回收。 回返 `{ transport, sessionManager }` 这样 调用者可以将会话拆下. 从 `@arcjet/transport/http2`。 。 。 .

### 代理支持

标准代理环境变量( E)`HTTP_PROXY` 财务报告和审定财务报表 `HTTPS_PROXY`时 尊重 `NO_PROXY`)是自动检测的,从而有可能连接到 通过诸如Arcjet API之类的代理 [乌贼](https://www.squid-cache.org/)。当使用代理时, a 行在启动时被记录 `info` 级别(如此设置) `ARCJET_LOG_LEVEL=info` 来看 ) (中文(简体) ). 代理URL本身没有被登录,因为它可以包含证书. 怎么样 请求实际上是由运行时间决定的,使用每次运行时间 内建代理支持 :

-   **节点.js** - 请求通过HTTP/1.1的代理程序,使用 节点/ js HTTP 代理代理的内置代理支持; 否则会制作 直接通过 HTTP/ 2. 设定 `proxyHttpVersion: "2"` 改为保留 HTTP/2,同时 代理(参见 [HTTP/2 通过代理](https://npmcn.com/package/%40arcjet/transport/#readme-http2-through-a-proxy) 页:1.
-   **阿宝** 财务报告和审定财务报表 **德诺** - 运行时间 `fetch` 以本地方式执行代理.
-   **边光** 财务报告和审定财务报表 **`workerd`** 这些边缘运行时间不支持外出 代理环境变量,所以没有使用代理.

`NO_PROXY` 接受一个逗号或空格分隔的宿主后缀列表,每个后缀带有 可选线索 `.` 或者说 `*.` 和可选 `:port`附加时 `*` 绕过 每个主机的代理 。 条目被匹配为主机名; IP/ CIDR 范围( 如 `10.0.0.0/8`)不支持,与 [卷曲](https://curl.se/docs/manpage.html#--noproxy)。关于 Bun 和 德诺的运行时间 `fetch` 应用 `NO_PROXY` 它的精确语义是 运行时间.

#### HTTP/2 通过代理

默认情况下,在Node.js上代理将连接从HTTP/2降级到 HTTP/1.1,因为Node的内置代理代理支持只工作于HTTP/1.1. 对于一个对耐久性敏感的API来说,这很不幸:它放弃了HTTP/2的 多功能, 因此同时请求的突起打开新的代理连接 而不是分享一个.

设置 `proxyHttpVersion: "2"` 保持 HTTP/2 端对端。 运输打开一个 HTTP 密码 `CONNECT` 隧道到代理,然后执行 TLS 握手——和 选择的ALPN 谈判 `h2` ——直接与来源相通. 只有代理服务器 盲目地推进地道,所以它从不看见,也不能降级 谈判协议.

这需要注意:

-   **只有节点J.** Bun和Deno不执行此构建的代理选项 打开;它们通过它们的代理 `fetch` (关于HTTP/1.1)无论如何 设置,边缘运行时间则根本不代理.
-   **需要一条地道(`CONNECT`) 代理服务器** 常见的HTTPS Egress, 包括 [乌贼](https://www.squid-cache.org/)。终止 TLS 并重新生成一个 HTTP/1.1 与来源的连接( 一个 TLS- 接取 / “ MITM” 代理) 无法 保存 HTTP/2 , 无论这个选项设置到什么位置 .
-   **代理不能缓冲地道.** HTTP/2 发送许多小的、依附的 边框。 运输功能已禁用 [纳格尔的算法](https://en.wikipedia.org/wiki/Nagle%27s_algorithm) (单位:千美元)`TCP_NODELAY`继续 如果代理缓冲器将字节隧道(或离开) Nagle 在其上游套接字上启用) 与延迟的ACK 交互可以 每回旅行增加大约40毫秒的耐久性,从而消除受益. 斯奎德集等隧道代理 `TCP_NODELAY` 打开 `CONNECT` 隧道通过 默认; 如果您使用不同的代理, 请确认 .

当没有代理应用时, 此选项没有效果 —— 直接连接总是使用 HTTP/2 (英语).

###### 参数

-   `baseUrl` (单位:千美元)`string`,例如: `https://example.com/my-api`(中文(简体) ) ——所有 HTTP 请求的基础 URL
-   `options` (单位:千美元)[`TransportOptions`](https://npmcn.com/package/%40arcjet/transport/#readme-transportoptions),可选) - 配置

###### 回返

连接传输 `createClient` 从 `@arcjet/protocol`。 。 。 .

### `ProxyEnvironment`

用于检测外出代理服务器的环境变量地图( TypeScript) 类型)。 这个形状和 `process.env`。 。 。 .

### `TransportLogger`

当检测到代理服务器时, Logger 在启动时打印一行( TypeScript) 类型)。 它必须提供 `info` 方法.

### `TransportOptions`

配置用于 `createTransport` (简体中文).

###### 字段

-   `log` (单位:千美元)[`TransportLogger`](https://npmcn.com/package/%40arcjet/transport/#readme-transportlogger),可选) —— 检测到代理时, 登录器用于在启动时打印行; 默认值 转换到从 `ARCJET_LOG_LEVEL` 环境变量
-   `proxyEnv` (单位:千美元)[`ProxyEnvironment`](https://npmcn.com/package/%40arcjet/transport/#readme-proxyenvironment) 或者说 `false`,可选) – 用于检测出局代理的环境变量;默认为 `process.env` 因此标准代理环境变量是自动检测的; 通过 `false` 忽略代理环境变量
-   `proxyHttpVersion` (单位:千美元)`"1.1"` 或者说 `"2"`默认 `"1.1"`(中文(简体) ) ——在节点.js上使用代理时使用的HTTP版本; `"1.1"` 路线 通过代理,使用节点.js HTTP代理,同时 `"2"` 保持 HTTP/2 由 正在通过代理 `CONNECT`;没有代理无效,或 bun、Deno和边缘运行时间(见 [HTTP/2 通过代理](https://npmcn.com/package/%40arcjet/transport/#readme-http2-through-a-proxy)(中文(简体) )

## 许可证

[Apache 许可证,2.0版本](http://www.apache.org/licenses/LICENSE-2.0) © [Arcjet实验室股份有限公司.](https://arcjet.com/)

## 常见问题

### @arcjet/transport 是什么？

Arcjet协议的运输机制

### 如何安装 @arcjet/transport？

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

### @arcjet/transport 支持 TypeScript 吗？

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

### @arcjet/transport 支持 ESM 还是 CommonJS？

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

### @arcjet/transport 需要什么版本的 Node\.js？

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

### @arcjet/transport 可以商用吗？

@arcjet/transport 使用 Apache-2\.0 许可。宽松许可：允许商业使用、修改和再分发，并附带明确的专利授权；分发时需保留许可与 NOTICE 文件，修改过的文件要注明改动。以上为概括，不构成法律意见，请以许可原文为准。

### @arcjet/transport 的下载量有多少？

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

### @arcjet/transport 还在维护吗？

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

