如何修复Expo-cli安装过程中出现的npm缓存错误与权限报错问题
报错诱因分析
- 首次安装expo-cli时出现的
Unexpected end of JSON input报错:由npm本地缓存的包元数据损坏导致,一般是之前下载依赖时网络中断、资源拉取不完整,使得缓存中存储的JSON文件被截断,无法正常解析。 - 执行
npm cache clean --force时出现用法报错:当前使用的npm版本过低,v5以下的旧版npm的cache clean命令不支持--force参数,语法规则与新版npm不兼容。 - 后续安装出现
EACCES权限报错:当前操作系统用户没有/usr/local/lib/node_modules系统级全局node_modules目录的写入权限,npm默认将全局包安装到该系统目录,普通用户无修改权限导致安装失败。安装过程中出现的各类deprecated警告仅为依赖包版本过时的提示,不会导致安装失败,不属于核心报错原因。
解决步骤
- 第一步:升级npm到最新稳定版,解决缓存命令语法不兼容问题,执行命令:
sudo npm install -g npm@latest
- 第二步:清理损坏的npm本地缓存,执行命令:
npm cache clean --force
- 第三步:解决全局安装权限问题,推荐使用第一种方案避免后续反复出现权限问题:
方案1:修改npm全局包安装路径为当前用户目录- 创建用户级全局包存储目录:
mkdir -p ~/.npm-global- 配置npm使用新目录作为全局安装路径:
npm config set prefix '~/.npm-global'- 编辑当前使用的shell配置文件(zsh对应
~/.zshrc,bash对应~/.bash_profile),在文件末尾添加如下内容:
export PATH=~/.npm-global/bin:$PATH- 刷新shell配置使其生效:
# zsh执行 source ~/.zshrc # bash执行 source ~/.bash_profile- 无需sudo直接安装expo-cli:
方案2:临时提权安装(仅适用于单次安装,后续安装其他全局包仍可能遇到权限问题):npm install -g expo-clisudo npm install -g expo-cli - 第四步:验证安装结果,执行命令
expo --version,正常输出版本号即代表安装成功。
内容的提问来源于stack exchange,提问作者mattgcf
相关产品推荐
相关产品推荐

