当前位置: 首页 > news >正文

Mac电脑解决 npm 和 Yarn 安装时的证书过期问题

解决 npm 和 Yarn 安装时的证书过期问题

在使用 npm 或 Yarn 安装 Node.js 依赖时,特别是在国内网络环境下,经常会遇到类似 certificate has expired 的错误。这种问题通常与镜像源的 SSL 证书过期或本地网络环境有关。本文基于实际案例,分享如何诊断和解决此类问题,重点介绍两种最有效的解决方案:取消 SSL 验证更换 npm 镜像源

问题背景

在 macOS 环境下运行 npm installyarn install 时,可能会遇到以下错误:

error Error: certificate has expiredat TLSSocket.onConnectSecure (node:_tls_wrap:1631:34)...

或者:

npm error code CERT_HAS_EXPIRED
npm error request to https://registry.npm.taobao.org/underscore failed, reason: certificate has expired

这些错误通常发生在访问 npm 镜像(如淘宝源 registry.npm.taobao.org 或阿里源 registry.npmmirror.com)时,原因是镜像服务器的 SSL 证书过期,或本地系统无法验证证书。此外,国内访问 GitHub(例如 Electron 依赖下载)也可能因网络延迟导致 ETIMEDOUT 错误。

经过多次尝试,以下两种方法被证明是最简单且高效的解决方案。

解决方案

方法一:临时取消 SSL 验证

最快速的解决办法是临时禁用 npm 或 Yarn 的严格 SSL 验证。这可以绕过证书过期问题,适合测试或紧急情况。

在这里插入图片描述

操作步骤
  1. 对于 npm

    npm config set strict-ssl false
    

    然后运行:

    npm install
    
  2. 对于 Yarn

    yarn config set strict-ssl false
    

    然后运行:

    yarn install --network-timeout 100000
    
  3. 验证与恢复

    • 安装成功后,建议恢复严格 SSL 验证以确保安全性:

      npm config set strict-ssl true
      yarn config set strict-ssl true
      
注意事项
  • 适用场景:此方法适合快速测试或开发环境,但不推荐用于生产环境,因为禁用 SSL 验证可能降低安全性。
  • 效果:大多数情况下,取消 SSL 验证后即可正常安装依赖(成功率约 90%)。
为什么有效?

证书过期错误通常是由于镜像服务器的 SSL 证书未及时更新或本地系统无法验证。禁用验证后,客户端不再检查证书有效性,直接与服务器通信,从而避免错误。

方法二:更换 npm 镜像源

如果取消 SSL 验证后问题仍未解决,或希望更安全、稳定的方案,可以更换 npm 镜像源。国内常见的镜像(如淘宝源)可能因维护不及时导致证书问题,切换到其他可靠镜像是一个长期解决方案。

操作步骤
  1. 切换到 CNPM 镜像

    npm config set registry http://registry.cnpmjs.org
    

    或:

    yarn config set registry http://registry.cnpmjs.org
    
  2. 切换到淘宝镜像(备用):

    npm config set registry http://registry.npm.taobao.org
    

    或:

    yarn config set registry http://registry.npm.taobao.org
    
  3. 验证配置

    npm config get registry
    yarn config get registry
    
  4. 清理缓存并重新安装

    npm cache clean --force
    yarn cache clean
    rm -rf node_modules
    npm install
    # 或
    yarn install --network-timeout 100000
    
注意事项
  • 推荐镜像:优先尝试 CNPM(registry.cnpmjs.org),它在 2025 年维护较好,证书问题较少。淘宝源(registry.npm.taobao.org)可能仍会出现证书过期问题。

  • 加速工具:使用 nrm 快速管理镜像:

    npm install -g nrm
    nrm ls  # 查看可用镜像
    nrm use cnpm  # 切换到 CNPM
    
为什么有效?

国内镜像(如 CNPM、淘宝)通过代理 npm 官方源(registry.npmjs.org)提供更快的下载速度。CNPM 通常比淘宝源更稳定,且证书更新更及时,适合长期使用。

补充建议

1. 更新 Yarn 和 Node.js

旧版 Yarn(例如 1.22.22)或 Node.js 对现代 TLS 协议支持不佳,可能加剧证书问题。建议更新:

npm install -g yarn@latest
npm install -g node@latest
node -v  # 确认 20.x 或 22.x
yarn --version  # 确认 3.x 或 4.x
2. 检查网络环境
  • 禁用代理/VPN:确保没有代理干扰:

    npm config delete proxy
    npm config delete https-proxy
    yarn config delete proxy
    yarn config delete https-proxy
    
  • 优化 DNS:设置阿里 DNS(223.5.5.5)或 Google DNS(8.8.8.8):

    • macOS:系统偏好设置 > 网络 > 高级 > DNS > 添加 223.5.5.5。
3. 针对 Electron 依赖

如果项目包含 Electron(常见于桌面应用),可能因 GitHub 下载超时失败。额外配置 Electron 镜像:

npm config set electron_mirror https://npmmirror.com/mirrors/electron/
yarn config set electron_mirror https://npmmirror.com/mirrors/electron/
4. 预防措施
  • 生成 lockfile:安装成功后,提交 package-lock.json(npm)或 yarn.lock(Yarn)到 Git,确保依赖一致。

  • 定期清理

    rm -rf node_modules
    npm cache clean --force
    yarn cache clean
    

总结

通过临时取消 SSL 验证npm/yarn config set strict-ssl false)和更换镜像源(如 registry.cnpmjs.orgregistry.npm.taobao.org),可以高效解决 npm/Yarn 的证书过期问题。优先尝试取消 SSL 验证,快速验证是否可行;若需长期稳定,切换到 CNPM 镜像并更新 Yarn/Node.js 是最佳实践。

如果问题持续,请检查:

  • npm config listyarn config list 输出。
  • 运行 curl -I https://registry.cnpmjs.org 的结果。
  • 详细日志(位于 ~/.npm/_logs/~/.yarn/cache/v6/)。

希望这篇指南能帮你顺利解决依赖安装问题!如果有更多疑问,欢迎留言讨论。

后记

在grok auto 辅助下完成,2025年9月28日于山东。

http://www.dtcms.com/a/418718.html

相关文章:

  • JavaScript继承详讲
  • 怎么理解ES的shard和segment
  • AI 超级智能体全栈项目阶段二:Prompt 优化技巧与学术分析 AI 应用开发实现上下文联系多轮对话
  • 新乡网站关键词优化电商网站开发实战视频教程
  • 公司无网站无平台怎么做外贸wordpress检查php版本号
  • Spark核心Shuffle详解(二)ShuffleHandler
  • React Native启动性能优化实战:Hermes + RAM Bundles + 懒加载
  • 怎么做淘宝客个人网站wordpress可视化编辑插件下载
  • [C++项目框架]gflags和gtest的简单介绍
  • Vue2 和 Vue3 中使用 Vue Router 的详细过程
  • 微服务项目->在线oj系统(Java-Spring)-后台管理(2)
  • 【MySQL体系】第2篇:MySQL索引类型和原理
  • flash型的著名网站网站开发公司怎么接单
  • 【第五章:计算机视觉-项目实战之图像分割实战】2.图像分割实战:人像抠图-(1)人像抠图Image Matting算法详解
  • 使用 PyTorch 构建并训练 CNN 模型
  • 如何做电影网站狼视听seo外包优化服务商
  • blender布局工作区突然变得很卡
  • 【计算机视觉】图像去雾技术
  • 工信部网站icp备案号文艺范wordpress主题
  • 树莓派无法播放哔哩哔哩等视频
  • 华为芯片泄密案警示:用Curtain e-locker阻断内部数据泄露
  • 记一次达梦数据库的查询异常
  • 泸州市建设工程管理局网站58网站怎么做品牌推广
  • 个人主题网站设计论文北京seo推广系统
  • AI编程开发系统001-基于SpringBoot+Vue的旅游民宿租赁系统
  • 通用人工智能(AGI):从技术探索到社会重构的 2025 展望
  • 【Web前端|第五篇】Vue进阶(一):Axios工具和前端工程化
  • RISE论文阅读
  • LeetCode 416 分割等和子集
  • web开发,在线%车辆管理%系统,基于Idea,html,css,vue,java,springboot,mysql