使用require()遇报错:需将JS文件转为ES模块的解决方案咨询
CommonJS模块报错的原因与解决方案
报错原因
这个提示的意思是:你的JS文件当前被识别为CommonJS模块(Node.js默认的模块格式,用require()/module.exports),系统(编辑器或Node.js)建议你可以将其转换为ES模块(使用import/export的新模块规范)。但你想继续用require(),说明你之前的配置逻辑搞反了。
如果你想继续使用require()(保持CommonJS模块)
你之前添加"type":"module"的操作是错误的——这个配置会让Node.js把所有.js文件默认当作ES模块,而ES模块不支持require()语法,所以才没解决问题。正确操作:
- 删掉package.json里的
"type":"module"配置,Node.js会默认将.js文件识别为CommonJS模块,require()就能正常使用。 - 如果只是单个文件要保留CommonJS格式,其他文件用ES模块,可以把该文件的后缀改成
.cjs,Node.js会自动将.cjs文件识别为CommonJS模块。
如果你确实想转成ES模块,但需要类似require()的功能
ES模块不支持直接用require(),但可以用动态import()函数替代,写法示例:
原来的CommonJS代码:
const myModule = require('./myModule.js');
改为ES模块写法:
// 动态import是异步操作,需要在async函数内使用 async function loadModule() { const myModule = await import('./myModule.js'); // 在这里使用myModule } loadModule();
内容的提问来源于stack exchange,提问作者Sereen Taleb
相关产品推荐
相关产品推荐

