使用Axios 1.2.1搭配esm包时出现ERR_REQUIRE_ESM错误求助
解决Axios 1.2.1搭配esm包触发
ERR_REQUIRE_ESM错误的方案 原因分析
Axios从1.0.0版本起就切换为纯ES模块(ESM)发布,不再支持CommonJS的require()调用方式。而esm模块的作用是让Node.js的CommonJS环境兼容ES模块语法,但它加载纯ESM格式的Axios时,内部的require()逻辑会和Axios的ESM格式冲突,导致抛出错误。Axios 0.21.1是旧版本,当时还是CommonJS格式,所以能正常运行。
解决办法
这里提供三种可行方案:
方案1:用Node.js原生ESM支持,弃用esm包
- 在项目根目录创建
package.json,添加配置:{ "type": "module" } - 直接运行代码:
Node.js 14.13.0及以上版本已经原生支持ES模块,完全不需要依赖node index.jsesm就能正常导入Axios。
方案2:改用动态导入适配esm
如果必须保留esm的使用场景,把静态import改成动态import()即可:
修改index.js代码:
(async () => { const axios = await import('axios'); console.log(axios.default); // ESM导出的Axios需要取default属性 })();
然后继续用原来的命令运行:
node -r esm index.js
方案3:降级Axios到兼容版本
如果不想改代码和运行方式,直接降级到Axios 0.21.1这类CommonJS格式的旧版本:
npm i axios@0.21.1
内容的提问来源于stack exchange,提问作者pdp2
相关产品推荐
相关产品推荐

