执行npm run build遇CustomError:无法找到导入模块求助
问题原因解析
1. ES模块规范的严格要求
你的项目通过package.json中的"type": "module"启用了ES模块(ESM)模式。在ESM规范下,Node.js的模块解析器要求导入语句必须指定完整的文件扩展名,而你在gulpfile.ts中的导入语句import { lzwEncode } from './src/utils/lzw';没有添加.ts后缀,导致解析器无法定位到实际存在的lzw.ts文件。
2. ts-node ESM加载器的行为限制
虽然你在tsconfig.json中配置了"ts-node": { "esm": true },但ts-node的ESM加载器并没有自动补全.ts扩展名的逻辑。在ESM模式下,它完全遵循Node.js的模块解析规则,不会像CommonJS模式那样尝试自动补全缺失的扩展名,因此无法识别不带.ts的导入路径。
快速验证方案
你已经确认目标文件存在,只需修改导入语句添加.ts扩展名:
import { lzwEncode } from './src/utils/lzw.ts';
重新执行npm run build即可验证该原因是否成立。
内容的提问来源于stack exchange,提问作者Dolphin
相关产品推荐
相关产品推荐

