Git Bash执行npm命令时出现ERR_SSL_CIPHER_OPERATION_FAILED错误的解决方法
问题描述
每次在Git Bash中执行npm create-react-app my-app或任何npm命令时,都会抛出以下SSL相关错误:
npm ERR! code ERR_SSL_CIPHER_OPERATION_FAILED npm ERR! BC0D0000:error:1C800066:Provider routines:ossl_gcm_stream_update:cipher operation failed: c:\ws\deps\openssl\openssl\providers\implementations\ciphers\ciphercommon_gcm.c:320:npm ERR!
已尝试过重装Node.js、升级OpenSSL、重装Git Bash、放行防火墙、设置npm config set strict-ssl false、格式化系统等方案,但问题仍未解决。
可行解决思路
强制npm使用系统OpenSSL而非内置版本
Node.js自带的OpenSSL库可能与系统环境存在冲突。在Git Bash中执行以下命令临时生效:export NODE_OPTIONS="--openssl-legacy-provider"若要永久生效,编辑Git Bash的配置文件(如
~/.bashrc或~/.bash_profile),添加上述命令后重启Git Bash。切换npm镜像源至国内镜像
官方源的网络问题可能导致SSL握手失败,切换到国内镜像并清空缓存:npm config set registry https://registry.npmmirror.com/ npm cache clean --force调整Git Bash的环境变量优先级
执行echo $PATH查看环境变量顺序,确保系统OpenSSL的安装路径(如C:\OpenSSL-win64\bin)优先级高于Node.js的路径。若顺序颠倒,手动修改PATH调整优先级。临时禁用Windows Defender实时保护测试
杀毒软件或Windows Defender的实时扫描可能干扰SSL加密操作,临时关闭后再执行npm命令。若恢复正常,将npm和Node.js的安装目录添加到Defender的排除列表。改用原生Windows终端执行命令
在PowerShell或CMD中尝试执行npm命令,若能正常运行,说明问题出在Git Bash的环境配置上,可尝试重新配置Git Bash或替换为MinGW。更换兼容的Node.js LTS版本
避免使用过新或过旧的Node.js版本,选择LTS版本重新安装,安装时确保勾选“Add to PATH”选项,且安装路径不含中文或特殊字符。
内容的提问来源于stack exchange,提问作者Hussain AlAdraj

