从 node-fetch 到 Web Fetch:cloudflare-typescript 新版本平滑迁移完整指南
从 node-fetch 到 Web Fetchcloudflare-typescript 新版本平滑迁移完整指南【免费下载链接】cloudflare-typescriptThe official TypeScript library for the Cloudflare API项目地址: https://gitcode.com/gh_mirrors/cl/cloudflare-typescript如果你正在使用cloudflare-typescriptCloudflare 官方 TypeScript SDK调用 Cloudflare API那么从node-fetch切换到内置Web Fetch的新版本升级就是绕不开的一步。本文是一份面向新手的迁移指南零依赖、自带一键迁移命令按步骤走即可完成平滑升级。一、为什么这次升级值得动手新版 SDK 最大的变化是彻底移除了node-fetch依赖改为使用运行环境内置的 WebfetchAPI实现了零运行时依赖可在 package.json 中看到dependencies为空对象。这带来了三个直接好处变化点旧版本新版本依赖数量依赖 node-fetch零依赖运行环境主要面向 Node.jsNode 20、Deno、Bun、Cloudflare Workers、浏览器通用响应类型Node 专有 Stream/Headers标准 WebReadableStream、Headers迁移工具无官方migrate命令一键改代码二、升级前准备最低环境要求动手前先确认你的工具链满足最低版本要求详见 MIGRATION.md工具最低版本Node.js20 LTSTypeScript4.9Jest28升级包本身很简单npm install cloudflare 建议先在功能分支上操作配合 Git 提交方便随时对比migrate工具的改动。三、最快上手步骤官方 migrate 一键迁移命令官方提供了迁移 CLI会自动扫描并改写你的代码。推荐先预览、再应用的两步走# 第 1 步只预览改动不写盘安全试跑 ./node_modules/.bin/cloudflare migrate ./your/src/folders --dry # 第 2 步确认无误后正式应用 ./node_modules/.bin/cloudflare migrate ./your/src/folders绝大多数项目跑完这两步就能完成 80% 的迁移工作。剩下的少数场景交给下面的破坏性变更清单逐项排查。四、必须知道的 6 个破坏性变更附前后对比1.asResponse/withResponse返回标准 Web 类型如果你曾对响应做流式处理body现在不再是 Node 的Readable而是 WebReadableStreamAPIError.headers也变成了 WebHeaders实例// 迁移后写法 import { Readable } from node:stream; const res await client.example.retrieve(string/with/slash).asResponse(); Readable.fromWeb(res.body).pipe(process.stdout);2. 多路径参数改为命名参数为避免把多个 ID 传错顺序除最后一个外均需以对象形式命名传入// Before client.parents.children.retrieve(p_123, c_456); // After client.parents.children.retrieve(c_456, { parent_id: p_123 });完整受影响方法列表收录在 MIGRATION.md 的折叠章节中排查时可对照查阅。3. 路径参数默认自动编码SDK 现在会自动对路径参数做 URI 编码请删掉手写的encodeURIComponent- client.example.retrieve(encodeURIComponent(string/with/slash)) client.example.retrieve(string/with/slash)4. 请求体必须传对象端点若接收数组等非对象请求体需要包一层属性传入// Before client.example.create([{ name: name }, { name: name }]); // After client.example.create({ items: [{ name: name }, { name: name }] });5.httpAgent移除改用fetchOptions内置 fetch 不支持node:http的 Agent代理配置改为平台相关的fetchOptionsimport * as undici from undici; const client new Cloudflare({ fetchOptions: { dispatcher: new undici.ProxyAgent(process.env.PROXY_URL), }, });Bun、Deno 的代理写法略有不同参考 README.md 中Configuring proxies一节的示例即可。6. 导入路径与内部 API 调整旧写法新写法import cloudflare/errorimport cloudflare/core/errorpagination、resource、uploads同理import { APIClient } from cloudflare/coreimport { BaseCloudflare } from cloudflare/clientCloudflare.fileFromPath(...)fs.createReadStream(...)Bun 可用Bun.fileimport cloudflare/shims/web已删除改为正确配置全局类型cloudflare/src/*cloudflare/*⚠️ 特别注意自动分页的for await ... of语法不受影响手动分页则简化为page.nextPageRequestOptions()一个方法替代原先的nextPageParams()/nextPageInfo()。五、TypeScript 报类型错误按运行环境配置升级后若出现Request、Response、Headers相关类型报错通常是全局类型未配置。对照 MIGRATION.md 的TypeScript troubleshooting章节运行环境tsconfig.json关键配置需安装的类型包Node.jstarget: ES2018建议 ES2020types/node 20Cloudflare Workerstypes: [cloudflare/workers-types]cloudflare/workers-typesBuntarget: ES2018types/bun 1.2.0浏览器lib: [DOM, DOM.Iterable, ES2018]无六、升级自检清单 ✅迁移完成后用这份清单快速验收Node.js ≥ 20、TypeScript ≥ 4.9已执行migrate --dry预览并复核全部 diff全局搜索httpAgent、fileFromPath、cloudflare/shims、cloudflare/src无残留检查所有.asResponse()/.withResponse()与APIError.headers的用法删除手动encodeURIComponent的路径参数tsconfig.json与types包已按运行环境更新全量测试通过测试基线要求 Jest 28测试用例分布在 tests/ 目录七、常见疑问 FAQQ升级会破坏现有业务吗官方按 SemVer 发布本次为大版本升级破坏性变更已全部收录在 MIGRATION.md配合migrate工具可自动化处理绝大多数改动。Qnode-fetch的 polyfill 还要保留吗不需要。新版直接使用内置 fetch相关 shim 导入cloudflare/shims/*已移除可一并清理。Q上传文件怎么写支持File、fetch Response、fs.ReadStream或官方toFile辅助函数Uploadable与toFile仍从cloudflare/core/uploads导出示例见 README.md 的File uploads章节。写在最后 cloudflare-typescript 新版迁移的核心就是四件事升级包 → 跑migrate命令 → 按第六节清单排查 6 类变更 → 按运行环境配置类型。完成之后你将获得一个零依赖、跨运行环境、响应类型完全标准化的现代 SDK。更多 API 细节可查阅 api.md 与 CHANGELOG.md核心请求逻辑可参考 src/core/ 目录源码。【免费下载链接】cloudflare-typescriptThe official TypeScript library for the Cloudflare API项目地址: https://gitcode.com/gh_mirrors/cl/cloudflare-typescript创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

LeetCode 141.环形链表

LeetCode 141.环形链表

目录1 题目概述2 题目解法3 证明原题链接环形链表1 题目概述 给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 如果链表中存在环 ,则返回 true 。 否…

2026/8/26 18:34:20 阅读更多 →
Python装饰器深度解析:从核心原理到高级应用实战

Python装饰器深度解析:从核心原理到高级应用实战

1. 项目概述:为什么装饰器是Python开发者的必修课?如果你写过一段时间的Python,尤其是在接触Web框架(比如Flask、Django)或者一些测试框架时,一定见过那个神奇的“”符号。它看起来像语法糖,用起…

2026/8/25 18:03:11 阅读更多 →
为什么eslint-config-canonical每加一条规则就升major版本?深入解读其semver版本策略

为什么eslint-config-canonical每加一条规则就升major版本?深入解读其semver版本策略

为什么eslint-config-canonical每加一条规则就升major版本?深入解读其semver版本策略 【免费下载链接】eslint-config-canonical The most comprehensive ES code style guide. 项目地址: https://gitcode.com/gh_mirrors/es/eslint-config-canonical 你有没…

2026/8/25 18:03:11 阅读更多 →

最新新闻

1.10 C++踩坑排雷手册——union 的类型活跃状态:读取非活跃成员为未定义行为

1.10 C++踩坑排雷手册——union 的类型活跃状态:读取非活跃成员为未定义行为

1.10 C++实战100例——union的类型活跃状态:读取非活跃成员为未定义行为 受众 中级工程师,已掌握 union 的基本语法,能区分 C 风格 union 与 C++ 的活跃成员概念。默认具备基础 Linux 操作能力和 GDB 调试能力。 场景锚定 场景:你在 C++ 代码中定义了一个 union 包含 i…

2026/8/26 20:05:46 阅读更多 →
Vibe Coding AI编程方法集 -- 编程新范式

Vibe Coding AI编程方法集 -- 编程新范式

Vibe编程探索AI时代编程新范式——范文杰等1. 从命令到意图 意图式编程的本质变化体现在以下几点。 聚焦目标而非路径:开发由 “怎么做” 转向 “要达成什么”。抽象能力提升:意图可沉淀为复用模块,跨团队共享。协作语言统一:业务…

2026/8/26 20:05:46 阅读更多 →
直接传递给视频AI的文本结构:类似json字符串结构自然语言

直接传递给视频AI的文本结构:类似json字符串结构自然语言

比如:视频时长:10s 视频内容:xxxxxxx 视频要求:xxxxxxxx 视频素材:xxxxxxxx我觉得他的优点是:1 表达非常清晰,几乎没有歧义2 文字简洁,没有废话,应该可以提高AI生成的质量3 固定结构,使用非常方…

2026/8/26 20:05:46 阅读更多 →
DroidCam OBS插件设置项深度解析:分辨率、H.264与硬件加速的7个关键选项

DroidCam OBS插件设置项深度解析:分辨率、H.264与硬件加速的7个关键选项

DroidCam OBS插件设置项深度解析:分辨率、H.264与硬件加速的7个关键选项 【免费下载链接】droidcam-obs-plugin DroidCam OBS Source 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam-obs-plugin DroidCam OBS插件(droidcam-obs-plugin&am…

2026/8/26 20:05:45 阅读更多 →
如何快速上手 ip-location-zh:一行 composer 命令,即刻获取 IP 省市与行政区划代码

如何快速上手 ip-location-zh:一行 composer 命令,即刻获取 IP 省市与行政区划代码

如何快速上手 ip-location-zh:一行 composer 命令,即刻获取 IP 省市与行政区划代码 【免费下载链接】ip-location-zh 获取 IP 地址的真实地理位置 项目地址: https://gitcode.com/gh_mirrors/ip/ip-location-zh ip-location-zh 是一个免费的 PHP …

2026/8/26 20:04:45 阅读更多 →
MySQL8 Docker容器化部署之x86-64架构(含备份)

MySQL8 Docker容器化部署之x86-64架构(含备份)

一、 简介 本文介绍如何在 x86-64 架构的服务器上安装并配置MySQL8,涵盖目录规划、镜像拉取、容器启动与数据备份等关键步骤,帮助读者快速完成生产可用的部署。 二、详解 1. 创建目录 创建安装目录、数据目录与备份目录。 >> mkdir -p /opt/softwa…

2026/8/26 20:04:45 阅读更多 →

日新闻

Python random 模块常用函数详解:从入门到实战

Python random 模块常用函数详解:从入门到实战

目录 1. 引言2. 准备工作3. 基础随机函数4. 序列相关函数5. 随机种子与复现6. 实战案例7. 注意事项8. 常见问题与排查9. 总结 1. 引言 摘要: 本文系统介绍 Python 标准库 random 模块中最常用的随机数生成函数。内容涵盖基础随机函数(random()、unifor…

2026/8/26 0:00:40 阅读更多 →
《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》读书笔记--第三章Databases and Database Files(2)

《Microsoft Sql server 2008 Internals》索引目录: 《Microsoft Sql server 2008 Internals》读书笔记--目录索引 在上篇文章中,主要介绍了创建数据库的基本语法和FileGroup的初步知识。需要注意的是: 关于FileGroup 如果你的系统是用Raid设备直接存…

2026/8/26 1:18:18 阅读更多 →
政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体怎么建?三种模式、三步路径与四个误区

政务AI智能体已经从概念试点阶段,转入了政务服务的常态化落地应用;在实际使用过程中,它能自主理解办事需求、辅助完成填报申报、开展材料预审,并联动多个系统协同作业,真正嵌入到政务办理的全流程当中。但在落地推进过…

2026/8/26 1:18:18 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/26 14:45:33 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/26 17:46:43 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/26 14:46:37 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/26 3:50:20 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/26 17:46:39 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/26 1:24:05 阅读更多 →