Node.js v13.11.0使用ESM模块出现Cannot find module错误求助
解决Node.js ESM模块导入报错
ERR_MODULE_NOT_FOUND的问题 结合你的代码和报错信息,我整理了几个最可能的解决方向,帮你搞定这个问题:
1. 给本地模块添加完整扩展名
在ESM规范下,Node.js强制要求导入本地文件时必须指定完整的文件名后缀——这和CommonJS可以省略扩展名的规则不一样。
把你的导入语句修改成这样试试:
import Client from './structures/CalidiumClient.js';
如果你的CalidiumClient文件是其他后缀(比如.mjs),记得替换成对应的扩展名。
2. 修复路径乱码问题
从报错里的路径D:\ÐоÑкÑÑ\Calidium\src\structures\CalidiumClient能看出来,路径出现了乱码。这大概率是因为你的项目文件夹路径包含非ASCII字符(比如俄语字符),而Node.js v13对这类路径的ESM解析存在兼容性bug。
解决方法很直接:
- 把项目移动到纯英文路径下,比如
D:\Projects\Calidium\src\... - 确保文件夹和文件名都只用ASCII字符,避免编码解析出错
3. 升级Node.js版本
Node.js v13.11.0的ESM模块加载器还处于实验阶段,有不少已知的问题和兼容性坑。建议你升级到更稳定的LTS版本(比如v14.x及以上),新版本不仅完善了ESM的支持,还修复了大量路径解析相关的bug,能省不少麻烦。
4. 最后验证基础正确性
再确认几个细节:
structures文件夹确实在src目录下,和index.js同级CalidiumClient.js(或对应后缀的文件)确实存在于structures文件夹中- 注意文件名的大小写——虽然Windows文件系统不区分大小写,但ESM导入在某些场景下可能对大小写敏感
按照以上步骤排查后,应该就能解决这个模块找不到的问题了。
内容的提问来源于stack exchange,提问作者Bitler
相关产品推荐
相关产品推荐

