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

Node.js中fetch未定义/非函数问题求助:邮箱生成器报错排查

问题原因与解决办法

核心原因

  1. Node.js版本过低:你的Node.js版本应该低于18.x,这个版本的Node.js没有内置Fetch API,所以首次运行会触发fetch is not defined报错。
  2. node-fetch导入错误:你把const fetch = require('node-fetch');注释掉了,就算取消注释,如果安装的是node-fetch v3+版本,它仅支持ESM导入(import fetch from 'node-fetch'),用CommonJS的require语法会直接导致fetch is not a function的错误。
  3. 代码存在重复定义fetchData函数的冗余问题,虽不直接引发fetch报错,但会覆盖前一个函数定义;另外你使用了puppeteer却未导入,后续运行也会触发新的报错。

解决办法

方案一:升级Node.js使用内置Fetch API

若环境允许,直接升级Node.js到18.x及以上版本,无需额外安装包即可用内置fetch:

  1. 升级Node.js到18+(可通过官网下载或nvm等工具完成)
  2. 确保代码中不导入node-fetch,直接使用原生fetch即可。

方案二:正确使用node-fetch

若无法升级Node.js,按以下步骤操作:

  1. 安装兼容CommonJS的node-fetch v2版本:
npm install node-fetch@2
  1. 取消代码里的注释,正确导入fetch:
const fetch = require('node-fetch');
  1. 若坚持使用node-fetch v3+,需将文件改为ESM格式:
    • 将文件后缀改为.mjs,或在package.json中添加"type": "module"
    • 改用ESM导入语法:
    import fetch from 'node-fetch';
    

额外代码修复建议

  1. 移除重复的fetchData函数,保留带try-catch的版本即可。
  2. 补充导入puppeteer-extra(因为你使用了stealth插件):
const puppeteer = require('puppeteer-extra');

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:20:37