【问题标题】:how can i use native fetch with node in typescript (node v17.6)我如何在打字稿中使用本机提取和节点(节点 v17.6)
【发布时间】:2022-10-18 22:19:56
【问题描述】:

在控制台中,当运行 node --experimental-fetch 时,fetch 命令现在本机启用(节点版本 >=17.6)。见下文

但是,当我添加一个打字稿层时,我总是得到error TS2304: Cannot find name 'fetch'

我该如何解决这个问题?

背景思路:原生使用fetch,摆脱node-fetch@types/node-fetch依赖

tsconfig.json 和一般设置:https://github.com/nexys-system/server-boilerplate/blob/master/tsconfig.json

也可以看看:

【问题讨论】:

  • 鉴于它是实验性的,它可能还没有出现在@types/node 中。
  • 我可以在@types/node 中创建 PR 吗?还有其他方法可以破解它吗?即在全球范围内定义fetch
  • 1. 是的,您可以在定义这些类型的DefinitelyTyped 存储库上创建一个PR。 2. 是的,您还可以声明其他全局类型,参见例如stackoverflow.com/a/43523944/3001761
  • 作为一种变通的解决方法,您可以使用"dom" 扩展tsconfig.json 中的lib 部分。这包括fetch 的类型,但也包括许多其他仅在浏览器中可用的内置插件,所以要小心。
  • 嘿,我仍然有这个问题。我使用最新的@types/node (18.7.18) 在节点 18.9.0 上,它仍然给我“找不到名称 'fetch'”错误。我在我的 tsconfig 文件中定位 es2022 并包括节点类型。有趣的是,通过 @types/node 包快速搜索显示没有定义 fetch ......我错过了什么吗?

标签: node.js fetch-api


【解决方案1】:

目前只有两种方式:

  1. 您可以在您的tsconfig.json 中设置"lib": ["dom"]
  2. 您可以在使用fetch 的文件顶部添加/// <reference lib="dom" />

    我个人更喜欢#2,因为我会跟踪我在哪里使用这个 hack。

【讨论】:

    猜你喜欢
    • 2022-01-05
    • 2018-11-21
    • 2021-12-05
    • 2019-03-03
    • 2022-07-15
    • 2018-04-10
    • 2020-11-10
    • 1970-01-01
    • 2013-02-25
    相关资源
    最近更新 更多