Node依赖齐全仍报错:找不到@craftzing/akeneo-api内部模块
问题:使用@craftzing/akeneo-api时出现模块缺失错误
我编写Node脚本时,仅执行import语句导入@craftzing/akeneo-api就触发模块缺失错误。Node能找到这个模块本身,但该模块内部导入http-client文件时失败(文件实际存在)。注释掉http-client的导入后,后续的内部导入仍报错,说明库的内部导入逻辑存在问题。
报错信息
% node scripts/sync.js node:internal/errors:477 ErrorCaptureStackTrace(err); ^ Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/test/scripts/node_modules/@craftzing/akeneo-api/dist/mjs/http-client' imported from /Users/test/scripts/node_modules/@craftzing/akeneo-api/dist/mjs/index.js at new NodeError (node:internal/errors:387:5) at finalizeResolution (node:internal/modules/esm/resolve:429:11) at moduleResolve (node:internal/modules/esm/resolve:1006:10) at defaultResolve (node:internal/modules/esm/resolve:1214:11) at nextResolve (node:internal/modules/esm/loader:165:28) at ESMLoader.resolve (node:internal/modules/esm/loader:844:30) at ESMLoader.getModuleJob (node:internal/modules/esm/loader:431:18) at ModuleWrap.<anonymous> (node:internal/modules/esm/module_job:76:40) at link (node:internal/modules/esm/module_job:75:36) { code: 'ERR_MODULE_NOT_FOUND' }
当前脚本代码
import client from '@craftzing/akeneo-api'; console.log('test');
解决思路
- 检查Node版本与模块系统兼容性:确保Node版本在v14.13.0以上(支持ES模块),项目根目录的
package.json是否配置了"type": "module",排查是否存在ES模块与CommonJS混用的情况。 - 重新安装依赖:删除
node_modules文件夹以及package-lock.json/yarn.lock文件,重新执行npm install或yarn install,修复可能存在的依赖安装不完整问题。 - 核查库的内部导入路径:打开
node_modules/@craftzing/akeneo-api/dist/mjs/index.js,查看http-client的导入语句,确认路径是否正确(ES模块导入需要完整文件名,比如是否遗漏了.js后缀)。如果路径有误,可以临时修改库文件修复,同时向库作者提交Issue反馈。 - 尝试切换为CommonJS导入:如果项目采用CommonJS环境,改用
const client = require('@craftzing/akeneo-api');,同时检查库的package.json中main或exports字段是否支持CommonJS导出。 - 检查库的构建产物完整性:确认
node_modules/@craftzing/akeneo-api/dist/mjs/http-client.js文件是否存在,若不存在则说明库的构建过程有问题,可以尝试安装库的开发版本,或等待官方修复。
内容的提问来源于stack exchange,提问作者psyvic
相关产品推荐
相关产品推荐

