You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在NodeJS中使用TypeScript顶层await与fetch遇未定义错误求助

问题原因与解决方案

核心原因

你遇到的ReferenceError: fetch is not defined和TypeScript编译配置无关,问题出在NodeJS(尤其是你要兼容的旧版本)本身没有内置fetch API:

  • TypeScript的module和target配置仅负责语法转译,不会自动补充NodeJS缺失的全局API实现。
  • NodeJS从v18版本开始才原生支持fetch,若你的目标兼容版本低于v18,必然会触发该错误。

解决方法

1. 使用node-fetch作为polyfill(推荐,适配旧版NodeJS)

这是最贴合你兼容需求的方案:

  • 安装依赖:
    npm install node-fetch
    
  • 在代码中导入后直接使用:
    import fetch from 'node-fetch';
    
    const response = await fetch('https://example.com');
    
  • 若需要全局可用(避免每个文件重复导入),可在项目入口文件添加:
    import fetch from 'node-fetch';
    globalThis.fetch = fetch;
    

2. 升级NodeJS到v18+(无需兼容旧版时可选)

如果不需要适配低版本NodeJS,直接升级到v18或更高版本,即可使用NodeJS原生提供的fetch API,无需额外配置。

3. 替换为其他HTTP库

比如改用axios替代fetch,安装后适配API调用即可:

npm install axios
import axios from 'axios';

const response = await axios.get('https://example.com');

补充:顶层await的配置确认

你的tsconfig已满足顶层await的语法要求,但需确保项目以ES模块模式运行:

  • 在package.json中添加"type": "module",否则NodeJS会以CommonJS模式加载代码,顶层await会触发错误。

内容的提问来源于stack exchange,提问作者user12582392

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 05:05:16