快捷导航
在开始解决问题之前,大家可以通过下面的导航快速找到相关资源啦!💡👇
快捷导航 | 链接地址 | 备注 |
---|---|---|
相关文档 | - | |
ambari+bigtop自定义组件集成 | https://ttbigdata.blog.csdn.net/article/details/142150086) | CSDN地址 |
编译、开发、部署、集成解决方案 | https://t.zsxq.com/0PVcI | 知识星球 |
源代码 | - | |
Ambari-env | https://github.com/TtBigdata/ambari-env | GitHub |
Ambari-env | https://gitee.com/tt-bigdata/ambari-env | Gitee |
Ambari-2.8.0魔改版 | https://gitee.com/tt-bigdata/ambari-2.8.0 | Gitee |
编译包 | - | |
蓝奏云-1.0.2 | https://www.ilanzou.com/s/4mfyXMq9?code=6655 | |
阿里云盘-1.0.2 | https://www.alipan.com/s/q3TqL1mdPBp | 提取码:01no |
联系方式 | - | |
QQ:1群 | https://qm.qq.com/q/3DrsCY5b7a |
正题:如何解决 bower underscore#1.7.0 CERT_HAS_EXPIRED Request to https://registry.bower.io/packages/underscore failed: certificate has expired 错误问题 🤔
1️⃣ 错误分析
下述完整报错日志:
/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node/node /opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/bin/bower install --allow-root --verbose
bower angular#* CERT_HAS_EXPIRED Request to https://registry.bower.io/packages/angular failed: certificate has expiredStack trace:
Error: Request to https://registry.bower.io/packages/angular failed: certificate has expiredat createError (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/bower-registry-client/lib/util/createError.js:2
:15)at Request._callback (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/bower-registry-client/lib/lookup.js:97:29
)at self.callback (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/bower-registry-client/node_modules/request/re
quest.js:188:22)at emitOne (events.js:77:13)at Request.emit (events.js:169:7)at Request.request.emit (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/request-replay/index.js:69:33)at Request.onRequestError (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/bower-registry-client/node_modules/r
equest/request.js:884:8)at emitOne (events.js:82:20)at ClientRequest.emit (events.js:169:7)at TLSSocket.socketErrorListener (_http_client.js:269:9)
From previous event:at PackageRepository.fetch (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/PackageRepository.js:46:14)at Manager._fetch (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/Manager.js:382:10)at Array.forEach (native)at Manager.resolve (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/Manager.js:127:23)at Project._bootstrap (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/Project.js:672:10)at /opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/Project.js:83:25
From previous event:at Manager.resolve (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/Manager.js:119:24)at Project._bootstrap (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/Project.js:672:10)at /opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/Project.js:83:25
From previous event:at Project.install (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/core/Project.js:91:10)at install (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/commands/install.js:29:20)at /opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/commands/index.js:33:28
From previous event:at withLogger (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/commands/index.js:40:14)at Function.runFromArgv [as line] (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/commands/index.js:30:16)at Object.<anonymous> (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/bin/bower.js:83:26)Console trace:
Errorat StandardRenderer.error (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/renderers/StandardRenderer.js:88:37)at Logger.<anonymous> (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/bin/bower.js:113:30)at emitOne (events.js:77:13)at Logger.emit (events.js:169:7)at Logger.emit (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/bower-logger/lib/Logger.js:29:39)at /opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/commands/index.js:49:24at _rejected (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/q/q.js:864:24)at /opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/q/q.js:890:30at Promise.when (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/q/q.js:1142:31)at Promise.promise.promiseDispatch (/opt/modules/ambari/ambari-admin/src/main/resources/ui/admin-web/node_modules/bower/lib/node_modules/q/q.js:808:41)
System info:
Bower version: 1.8.8
Node version: 4.5.0
OS: Linux 5.15.153.1-microsoft-standard-WSL2 x64
[root@centos1 admin-web]#
在使用 Bower 进行项目依赖管理时,遇到了一条错误信息:
Request to https://registry.bower.io/packages/angular failed: certificate has expired
该错误表示 Bower 在尝试从指定的注册源请求 Angular 包时,由于 SSL 证书过期而导致请求失败。这意味着我无法获取所需的依赖项,影响了项目的进展。
2️⃣ 解决方案 💡
-
检查证书状态 🔍:
- 首先,我会访问
https://registry.bower.io
,查看该网站的证书是否真的过期。这一步可以帮助我确认问题的根源。
- 首先,我会访问
-
更新源 🔄:
- 如果证书确实过期,下一步是考虑替换注册源。许多情况下,Bower 的默认源可能不再可用或不稳定。
-
使用 GitHub 🌐:
- 直接从 GitHub 安装需要的包是一个有效的替代方案。通过指定 GitHub 上的 Angular 包链接,可以避免 SSL 问题。
-
调整 Bower 配置 ⚙️:
- 如果上述步骤无法解决问题,可以在 Bower 的配置文件中添加
"strict-ssl": false
,以临时禁用 SSL 验证。这虽然不是推荐的长期解决方案,但可以帮助我快速恢复依赖安装。
- 如果上述步骤无法解决问题,可以在 Bower 的配置文件中添加
我的解决办法
由于在国内访问 Bower 镜像非常困难,甚至没有可用的 Bower 源,我选择了以下方法:
-
禁用 SSL 验证:在
.bowerrc
中添加配置:{"registry": "https://registry.bower.io/","strict-ssl": false,"analytics": false,"shorthand-resolver": "https://ghp.ci/https://github.com/{{owner}}/{{package}}.git","directory": "app/bower_components" }
通过这种方式,我能够绕过证书验证,快速安装依赖。
-
使用 GitHub 作为源:在安装 Angular 时,我直接从 GitHub 获取:
bower install angular#1.8.2 --allow-root
这样不仅解决了证书问题,还确保了我能获取到最新版本的依赖。