React Native项目初始化npm报错求助:SSL异常但yarn可用
问题原因分析
- npm缓存或网络配置异常:重置电脑后,npm残留了旧的SSL缓存或代理配置,导致SSL握手过程中出现解密失败;而yarn使用独立的缓存和配置体系,未受影响。
- npm版本兼容性问题:Node.js 16.16.0自带的npm 8.11.0存在已知的SSL握手兼容性bug,与部分镜像源的SSL配置不匹配。
- 系统SSL证书缺失/异常:重置电脑后系统根证书未正确更新或安装,npm无法验证镜像源的SSL证书,yarn则因自身证书验证逻辑适配了系统环境而正常工作。
解决方案
- 清除npm缓存并重置镜像源
执行以下命令清空缓存并切换到官方npm源:npm cache clean --force npm config set registry https://registry.npmjs.org/ - 检查并移除代理配置
先查看当前代理设置:
若输出非空,执行命令删除代理:npm config get proxy npm config get https-proxynpm config delete proxy npm config delete https-proxy - 升级npm到同大版本稳定版
Node.js 16.16.0自带的npm 8.11.0存在网络bug,升级到npm 8.x分支的最新稳定版:npm install -g npm@8.19.4 - 配置npm使用系统根证书
找到系统根证书路径(Windows:C:\Windows\System32\certificates\root;macOS:/System/Library/Keychains/SystemRootCertificates.keychain),执行命令让npm信任系统证书:npm config set cafile "系统根证书路径" - 临时禁用SSL验证(仅用于测试,不推荐长期使用)
执行命令关闭严格SSL验证,快速排查是否为证书问题:
测试完成后记得改回:npm config set strict-ssl falsenpm config set strict-ssl true
内容的提问来源于stack exchange,提问作者Dhara Patel
相关产品推荐
相关产品推荐

