运行react-native项目执行run-android报错Cannot read property 'split' of undefined
问题触发原因
该问题是npm v7.5.2版本的已知内置bug,npm的内部路径解析模块/usr/share/nodejs/npm/lib/utils/path.js未对读取到的路径参数做空值校验,在执行npm exec(也就是npx调用的底层逻辑)命令时,若读取到的系统路径参数为undefined,就会尝试对其调用split方法,直接抛出类型错误。
此外项目本地依赖损坏、npm全局缓存异常也可能触发该问题。
解决方案
你可以按以下优先级尝试修复:
- 升级npm到修复该bug的版本,执行命令:
npm install -g npm@latest
升级完成后执行npm -v确认版本高于7.5.2,再重新运行react-native项目即可。
- 若暂时无法升级npm,可跳过npx直接调用项目本地的react-native脚本执行命令:
./node_modules/.bin/react-native run-android
- 若升级后仍报错,执行全量缓存清理和依赖重装:
- 执行
npm cache clean --force清理全局npm缓存 - 删除项目目录下的
node_modules文件夹和package-lock.json文件 - 执行
npm install重新安装所有依赖 - 重启metro服务后再运行安卓打包命令
- 执行
- 若以上操作均无效,检查系统PATH环境变量是否存在空值或异常条目,修正后重启终端再重试。
内容的提问来源于stack exchange,提问作者Brunno Fagundes
相关产品推荐
相关产品推荐

