如何解决Yarn执行报错Cannot find module 'decamelize'问题?
解决Yarn/NPM安装依赖时的模块缺失与栈溢出问题
看起来你是因为混用Yarn和NPM搞乱了依赖管理环境,再加上缓存和残留文件的干扰,才触发了这一连串问题。我给你整理了一套逐步修复的方案:
1. 彻底清理所有依赖残留与缓存
先把项目里的混乱环境完全重置,这是解决这类问题的核心第一步:
- 删除项目根目录的
node_modules文件夹:- Windows系统执行:
rmdir /s /q node_modules - macOS/Linux系统执行:
rm -rf node_modules
- Windows系统执行:
- 删除Yarn的锁定文件:
rm yarn.lock - 删除NPM的锁定文件:
rm package-lock.json - 强制清理NPM全局缓存:
npm cache clean --force - 清理Yarn本地缓存:
yarn cache clean
2. 确认Node.js环境的正确性
你已经重装到了Node.js 10.15.3,先确认版本是否真的生效:
- 执行
node -v,确保输出是v10.15.3 - 执行
npm -v,这个Node版本对应的npm应该是6.4.1左右,如果版本不对,建议重新安装Node.js时勾选「自动配置环境变量」选项,或者手动把Node的安装路径添加到系统PATH里。
3. 重新用Yarn安装依赖
因为你最初是用Yarn的,先回到Yarn来恢复稳定状态:
- 执行
yarn install,等待依赖安装完成 - 如果还是弹出
Cannot find module 'decamelize'的错误,说明这个包要么没被正确声明在package.json里,要么是某个依赖的间接依赖缺失。你可以手动安装它:
如果它是开发依赖的话,加上yarn add decamelize--dev参数:yarn add decamelize --dev
4. 解决NPM安装的栈溢出问题
清理完残留后再执行npm install,一般就能解决栈溢出的报错。如果还是不行,大概率是依赖树里存在循环依赖或者版本冲突:
- 查看
package.json里的依赖,把那些标注deprecated的包(比如browserslist@1.7.7、samsam@1.3.0)尝试升级到兼容的新版本,不过要注意项目的兼容性,最好先小范围测试。 - 如果升级有风险,可以试试
npm install --force(npm 6版本支持),强制跳过版本冲突的检查。
5. 修复最初的浏览器模块缺失问题
等依赖安装正常后,重新构建项目(比如执行yarn build),再检查浏览器的模块缺失提示。如果还是出现问题,可能是:
- 某个包没有被正确安装,或者webpack配置里没有正确引入模块
- IntelliJ的文件索引异常,你已经试过Invalidate caches,现在可以再重启编辑器后重新打开项目,确保文件同步正常。
内容的提问来源于stack exchange,提问作者Leff
相关产品推荐
相关产品推荐

