在VSCode中使用import导入node-fetch报语法错误该如何解决?
问题解决方法
根本原因
你遇到的报错和node-fetch本身的配置无关,是Node.js对模块的默认判定规则导致的:
Node.js默认会将所有
.js后缀的文件判定为CommonJS模块,只有满足以下两个条件之一时,才会将文件识别为ES模块,允许使用import语法:
- 你的项目根目录下的package.json顶层配置了
"type": "module"- 你的代码文件后缀改为
.mjs
你之前查看的是node-fetch依赖包内部的package.json配置,该配置仅作用于node-fetch自身的源码文件,不会影响你自己项目里的代码判定。
可选解决方案
方案1:继续使用ES模块import语法(推荐,适配你当前安装的node-fetch 3.x版本)
- 进入你的项目根目录(存放
my_fetch_program.js、包含node_modules文件夹的目录),如果还没有package.json文件,先执行命令生成:npm init -y - 打开生成的package.json文件,在顶层JSON配置中添加一行:
"type": "module" - 把你的导入语句改回标准写法即可,无需写node_modules全路径:
import fetch from "node-fetch";
方案2:使用CommonJSrequire语法
node-fetch从3.x版本开始仅支持ES模块导入,如果你不想修改package.json配置,可以将node-fetch降级到2.x稳定版本:
- 执行降级安装命令:
npm install node-fetch@2 - 改用CommonJS语法导入:
const fetch = require('node-fetch');
补充说明
你使用的Node.js v14.17.0版本符合node-fetch 3.x的运行要求,无需升级Node.js版本。
内容的提问来源于stack exchange,提问作者AlexisLP
相关产品推荐
相关产品推荐

