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

网站接入Discord登录授权时报fetch is not a function错误如何解决

问题根因

TypeError: fetch is not a function报错的核心原因是Node.js环境的版本差异:

  • 仅Node.js v18.0.0及以上版本内置了全局fetchAPI,v17及更低版本默认不提供该方法
  • 项目启动时只会做语法校验,不会执行未触发的回调逻辑,因此启动时无报错,只有Discord授权回调触发、执行到对应fetch代码时才会抛出错误
解决方案

可根据你的开发环境选择任意一种方案修复:

方案1:升级Node.js版本(推荐)

将本地Node.js版本升级到v18.0.0或更高的长期支持(LTS)版本,升级完成后重新运行node oauth.js启动项目即可,无需修改代码即可正常调用fetch。

方案2:安装兼容polyfill

如果暂时无法升级Node版本,可以安装node-fetch包补全fetch能力:

  • 在项目根目录执行安装命令:
    npm install node-fetch@2
    注:node-fetch v3及以上版本仅支持ES Module导入规范,如果你项目中使用CommonJS规范(即用require导入模块),必须安装v2版本
  • 在oauth.js文件顶部添加导入代码:
    const fetch = require('node-fetch');
  • 重新启动项目即可解决报错。
验证逻辑

修复完成后重新触发Discord授权流程,授权回调后不会再抛出fetch相关错误,可正常拉取授权信息完成登录逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 17:54:03