运行旧版Ember项目报Cannot find module "apollo-cache"错误如何解决
问题成因
- 依赖版本不匹配:你项目中使用的
apollo-cache-inmemory@^1.2.9要求对等依赖apollo-cache的版本为~1.2.9,你手动添加的apollo-cache@^1.3.5版本过高,二者不兼容导致模块无法被正确识别。 - 跨大版本升级框架工具:你将
ember-cli从3.3.0直接升级到3.28.3,跨度过大的版本升级打破了原有旧版生态依赖的适配逻辑,ember-apollo-client@1.0.1与新版ember-cli的自动导入逻辑存在适配冲突。 - 依赖缓存问题:升级依赖前没有清理旧的
node_modules、yarn.lock以及Ember项目的tmp缓存文件,导致新旧依赖冲突,模块解析路径异常。
解决方案
- 清理缓存文件
删除项目根目录下的node_modules文件夹、yarn.lock文件以及tmp文件夹:
rm -rf node_modules yarn.lock tmp
- 修正依赖版本
打开package.json,调整apollo-cache的版本号和apollo-cache-inmemory版本匹配:
"apollo-cache": "^1.2.9"
如果后续还是报错,可以将apollo-cache从devDependencies移动到dependencies中,确保运行时可以正常加载。
- 重新安装依赖
执行yarn命令重新拉取适配版本的依赖:
yarn install
- 清理Ember缓存并重启服务
ember clean ember serve
如果上述操作后还是存在问题,说明跨大版本升级ember-cli带来的其他兼容问题已经暴露,建议将ember-cli和ember-cli-sass回退到升级前的版本,按照Ember官方升级指南逐小版本迭代升级,避免一次性跨度过大导致的生态适配问题。
内容的提问来源于stack exchange,提问作者Volker Heidema
相关产品推荐
相关产品推荐

