npm安装mobx-react时报错Cannot read property 'match' of undefined如何解决
安装mobx-react时
Cannot read property 'match' of undefined报错排查与解决 报错根因定位
- 从日志阶段判断,异常触发于npm的
loadShrinkwrap(加载锁文件)环节,和mobx-react包本身的兼容性没有直接关联,是npm 6.9.0版本解析异常锁文件时的已知缺陷 - 报错栈指向的
tarballToVersion方法,原本用于从锁文件记录的包安装源地址(tarball字段)中提取版本信息,当锁文件内某条依赖记录的tarball字段缺失、值为undefined时,方法会直接对undefined值执行.match()操作,触发空指针报错
分步解决操作
- 清理项目内的异常锁文件与旧依赖目录,在项目根目录执行对应命令:
- Mac/Linux 环境:
rm -rf node_modules package-lock.json npm-shrinkwrap.json - Windows PowerShell 环境:
Remove-Item -Recurse -Force node_modules, package-lock.json, npm-shrinkwrap.json
- Mac/Linux 环境:
- 清理npm本地全局缓存,执行命令:
npm cache clean --force - 重新执行mobx-react安装流程:
npm install mobx-react --save
兜底适配方案
如果上述操作完成后仍复现相同报错,可根据实际使用场景选择对应处理方式:
- 升级兼容node v10.16.0的稳定npm版本6.14.18,执行命令:
npm install -g npm@6.14.18,该版本修复了锁文件解析环节对空tarball字段的兼容处理,可从根源避免空指针报错 - 若不想调整全局npm版本,可在安装命令中跳过锁文件解析/生成步骤,执行命令:
npm install mobx-react --save --no-package-lock
内容的提问来源于stack exchange,提问作者guicheng zhang
相关产品推荐
相关产品推荐

