Node.js已配置type:module仍报Cannot use import statement outside a module错误
问题原因及解决办法
核心原因
当你在package.json中添加"type":"module"后,Node.js会将所有.js文件识别为ES模块。此时你仍然用CommonJS的require()引入axios,会和axios本身的ES模块结构产生冲突——axios当前版本默认以ES模块形式发布,在ES模块环境下用require()加载会触发模块语法不兼容的错误。
解决办法
方案1:保持ES模块模式(推荐)
既然已经开启了ES模块,就统一用ES模块的语法引入axios:
- 修改
index.js中的引入语句:
import axios from 'axios';
- 确保你的Node.js版本≥14.13.0(或≥16.0.0,ES模块支持更稳定),直接运行
node index.js即可。
方案2:切换回CommonJS模式
如果更习惯用require(),可以移除ES模块配置:
- 删除
package.json中的"type":"module"字段; - 保持原有的
const axios = require('axios');代码,运行node index.js即可。Node.js会自动加载axios的CommonJS兼容版本。
额外排查点
- 确认
package.json中的"type":"module"是顶级字段(和"name"、"version"同级),不要嵌套在其他配置项里; - 若安装了旧版本axios,尝试更新到最新版:
npm install axios@latest
内容的提问来源于stack exchange,提问作者Exilon
相关产品推荐
相关产品推荐

