为何重新安装expo-cli后版本未更新,无法运行run:android命令?
问题原因分析
安装后expo-cli版本未更新的核心原因
- 系统PATH路径优先级冲突:设备上大概率存在多个位置的expo-cli安装包,常见情况是曾经用yarn全局安装过expo-cli,或是通过nvm等版本工具安装过多个Node.js版本,不同包管理器/Node版本对应的全局包存储路径不同。本次通过npm全局安装的新版本路径在系统PATH中的优先级低于旧版本所在路径,终端执行
expo命令时会优先调用优先级更高的旧版本文件,导致查看版本时始终显示旧版本号。
你可以在Windows终端执行where expo、mac/Linux终端执行which expo验证这一点,如果输出的第一个路径不是本次安装返回的C:\Users\User\AppData\Roaming\npm\expo,即可确认是该问题。 - 旧版本残留与缓存问题:卸载全局包时若存在文件占用或权限限制,会导致旧版本的expo-cli文件没有被完全删除,加上npm本地缓存未清理的话,重装时会复用旧的缓存文件,最终版本无变化。
run命令报错的原因
你输入的命令存在拼写错误,正确命令是expo run:android,你误写为run:androd(缺少字母i),所以终端识别不到对应命令。另外需要注意,该命令仅支持项目SDK版本在41及以上的场景,若项目本地的SDK版本未达标,即使拼写正确也无法正常执行。
解决方案
- 首先校验expo命令的调用路径,删除PATH中优先级更高的旧版本expo-cli所在路径,或是将npm全局包存储路径调整到PATH的最上方,调整后重启终端再验证版本。
- 执行
npm cache clean --force清理npm本地缓存,重新执行全局卸载、全局安装命令,安装完成后重启终端再执行expo --version确认版本。 - 执行安卓运行命令时修正拼写为
expo run:android,提前确认项目的expo SDK版本已升级至41及以上。
内容的提问来源于stack exchange,提问作者On the way to success
相关产品推荐
相关产品推荐

