为什么代理选项在节点本机获取中不可用



我最近开始使用本机获取功能(节点17+(

我今天意识到它缺少node-fetch的一些功能,例如agent

为什么?

有计划添加吗?

这很遗憾,因为我需要将node-fetch添加到我的项目中作为

参见

  • https://www.npmjs.com/package/node-fetch#custom-代理人
  • https://nodejs.org/api/globals.html#fetch

为什么http模块中的选项不可用,实际的答案是,也许令人惊讶的是,节点的内置fetch()全局不使用传统内置http/https模块提供的HTTP堆栈。

相反,它使用了一种称为undici的并行从头开始的HTTP堆栈重写。

考虑到fetch()的HTTP堆栈与标准HTTP堆栈是完全独立的,您可以提供给http.get等人的选项不适用于fetch()也就不足为奇了。

undici的文档可以在这里找到。httpAgents被CCD_。您可以将自定义Dispatcher传递给fetch(…, { dispatcher }),从而可以自定义fetch的HTTP行为。

本机fetch函数是实验性的,即尚未准备好用于生产,很可能存在问题。

https://nodejs.org/dist/latest-v18.x/docs/api/globals.html#fetch

同样,jfriend00点是非常有效的:;在nodejs中内置fetch((的全部意义不就是它与浏览器中的API完全相同吗">

最新更新