使用frontend-maven-plugin构建Angular项目时npm安装依赖报SSL3错误
问题根因
- 你使用的
Node 6.10.2版本早已停止维护,内置的OpenSSL版本过于老旧,无法兼容当前主流HTTPS站点使用的TLS协议版本、加密套件和证书签名规则,所有HTTPS请求都会触发SSL签名校验失败的错误,这是核心问题 - 日志中的Python相关报错是次生问题:node-sass预编译二进制包下载失败后会自动触发本地编译流程,才会调用node-gyp检查本地编译环境,核心问题解决后不需要处理Python相关配置也能正常运行
解决方案
按可行性优先级排序:
方案1:升级Node版本(最推荐)
将frontend-maven-plugin中配置的Node版本升级到14.x及以上的长期支持版本,同步调整项目兼容的Angular、node-sass等依赖版本,从根本上解决旧版运行环境的兼容性问题。
方案2:配置国内HTTP镜像源(适配旧版本的首选方案)
在项目根目录的.npmrc文件中添加以下配置,全部使用HTTP协议的国内公开镜像,绕开HTTPS校验问题:
# npm 源使用国内HTTP镜像 registry=http://registry.npmmirror.com # node-sass二进制包镜像 sass_binary_site=http://npmmirror.com/mirrors/node-sass # node-gyp头文件镜像 node_gyp_disturl=http://npmmirror.com/mirrors/node # 关闭SSL严格校验 strict-ssl=false
如果需要全局生效,直接执行以下命令配置:
npm config set registry http://registry.npmmirror.com npm config set sass_binary_site http://npmmirror.com/mirrors/node-sass npm config set node_gyp_disturl http://npmmirror.com/mirrors/node npm config set strict-ssl false
方案3:临时关闭SSL校验(应急用,不推荐长期使用)
执行安装命令时临时添加参数跳过SSL校验:
npm install --strict-ssl=false
如果是Maven构建时生效,可以在frontend-maven-plugin的npm安装参数中添加--strict-ssl=false配置。
方案4:适配公司代理环境
如果当前网络处于公司代理环境,需要将代理服务器的根证书添加到npm信任列表:
npm config set cafile /path/to/your/proxy/root/cert.pem
内容的提问来源于stack exchange,提问作者Kronoss
相关产品推荐
相关产品推荐

