如何将JS文件从require升级为import并解决导入报错问题
正确将require升级为import语法的解决方案
问题根源
你的项目package.json中设置了"type": "module",这意味着所有.js文件会被Node当作ES模块处理,但network.js同时混用了ES模块的export和CommonJS的module.exports,导致模块类型冲突;改成.cjs后,.cjs文件被当作CommonJS模块,不支持ES模块的export语法,所以再次报错。
解决步骤
1. 统一network.js的模块语法
删除network.js中的CommonJS导出代码,只保留ES模块语法:
export const NETWORK = { eth: "eth", sol: "sol", };
2. 使用正确的import语句
在需要导入的文件中,使用以下ES模块导入语法即可:
import { NETWORK } from '../constants/network.js';
补充说明
- 如果项目中还有其他使用
require的文件,都需要改为ES模块的import语法; - 若部分文件需要保留CommonJS语法,可以将其重命名为
.cjs后缀,此时这些文件不能使用export/import,只能用module.exports/require; - 确保所有导入路径的后缀(
.js)不能省略,ES模块在Node中要求必须写全文件后缀。
内容的提问来源于stack exchange,提问作者Ritzy Dev
相关产品推荐
相关产品推荐

