制作自定义模块时遭遇Module not found: Can't resolve错误求助
解决Module not found: Can't resolve './Myfetch'的问题
从你给出的错误信息和代码配置来看,这个问题核心出在文件名匹配、目录结构与编译逻辑的冲突上,下面分几种情况帮你排查和解决:
1. 文件名大小写不匹配(最可能的原因)
在类Unix系统(比如你使用的macOS)中,文件系统是严格区分大小写的。你在index.js里的导入语句是:
import Myfetch from './Myfetch';
但你的实际模块文件是MyFetch(注意最后一个字母F为大写),这就导致Node.js或打包工具找不到对应的文件。
解决方法:
- 要么调整导入语句,和文件名保持完全一致:
import Myfetch from './MyFetch'; - 要么把模块文件名改成
Myfetch.js,让它和导入路径的大小写统一。
2. 编译脚本导致的文件缺失
看你package.json里的build脚本:
"build": "./node_modules/.bin/babel src --out-file index.js"
这个脚本只会把src目录下的代码编译后输出单个index.js文件到根目录,但你的MyFetch模块如果是放在src目录下,编译后它并没有被同步输出到根目录,这就导致根目录的index.js找不到同级的./Myfetch文件。
解决方法:
修改build脚本,把src目录下的所有文件都编译输出到根目录:
"build": "./node_modules/.bin/babel src --out-dir ."
这样编译后,src里的MyFetch.js也会被输出到根目录,和index.js同级,导入路径就能正确匹配了。
3. 缺少文件后缀(次要排查点)
确认你的模块文件是带.js后缀的MyFetch.js,而非无后缀的MyFetch。虽然多数打包工具会自动补全.js后缀,但显式加上后缀能避免很多路径解析歧义,比如把导入语句改成:
import Myfetch from './MyFetch.js';
按照上面的步骤调整后,应该就能解决模块找不到的问题了。
内容的提问来源于stack exchange,提问作者BARNOWL
相关产品推荐
相关产品推荐

