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

清除 pnpm 缓存,解决不同源安装依赖包失败的问题

发现问题

问题的起因是 Github Actions 中的 CI 任务一直失败。
在这里插入图片描述

排查问题

查看具体的报错信息,发现 cnpm 镜像源(r2.cnpmjs.org)的 SSL 证书已过期,导致 pnpm 无法安全下载依赖包。
在这里插入图片描述

尝试修复

尝试在 CI 工作流中设置 pnpm 的安装源。在 GitHub Actions 中配置

- name: Install dependenciesrun: |pnpm config set registry https://registry.npmjs.orgpnpm install --frozen-lockfile

但仍旧出现报错,排查发现读取的 pnpm-lock.yaml 文件,这里的 tarball 直接指向了 r2.cnpmjs.org,导致 pnpm 仍然尝试从旧源下载(pnpm-lock.yaml 会锁定下载地址)
在这里插入图片描述
在本地环境设置 pnpm 的源地址

pnpm config set registry https://registry.npmjs.org/

手动删除 pnpm-lock.yaml 并重新安装依赖包,生成新的 pnpm-lock.yaml文件。对比旧的文件发现 tarball 的源地址未被修改。
怀疑是 pnpm 的缓存,导致未彻底更新。

修复问题

1. 在 .npmrc 中永久设置 registry

由于使用旧电脑安装过依赖包,导致生成了指向 cnpm 源的 pnpm-lock.yaml。因此在项目的根目录增加 .npmrc 文件,设置使用官方源,避免不同开发者/多设备开发时出现安装源地址不一致的问题。

registry=https://registry.npmjs.org/

2. 清理 pnpm 的缓存

如果之前安装过依赖,pnpm 可能会复用缓存(~/.pnpm-store),而缓存里的包仍然是旧源下载的。
执行以下命令清理缓存,重新安装依赖并生成新的 pnpm-lock.yaml

pnpm store prune    # 清除缓存
rm -rf node_modules pnpm-lock.yaml
pnpm install       # 重新安装

完成上面两步后,就可以解决问题了。欢呼🎉

后记:pnpm 源的优先级问题

pnpm 会按以下优先级读取配置:

  • 项目级 .npmrc(项目根目录)
  • 用户级 .npmrc(~/.npmrc)
  • 全局 npm/pnpm 配置

如何检查

cat .npmrc  # 查看项目级配置
cat ~/.npmrc  # 查看用户级配置
pnpm config get registry # 查看全局配置

也可以检查 pnpm-lock.yaml 中是否锁定,如果 pnpm-lock.yaml 中锁定了特定 registry,pnpm 会优先使用它:

grep "r2.cnpmjs.org" pnpm-lock.yaml  # 检查是否锁定了旧镜像源
grep "registry.npmmirror.com" pnpm-lock.yaml  # 检查是否使用了阿里云镜像
http://www.lryc.cn/news/622200.html

相关文章:

  • 银河麒麟服务器jar包部署自启动配置
  • 如何在 Ubuntu 24.04 Noble LTS 上安装 Apache 服务器
  • 第十八讲:哈希2
  • Navicat 询问 AI | 轻松修复 SQL 错误
  • vector接口模拟实现及其原理
  • linux程序编译笔记
  • 软件重构的破与立:模式方法创新设计与工程实践
  • 达梦数据库使用控制台disql执行脚本
  • QML实现数据可视化
  • Nginx蜘蛛请求智能分流:精准识别爬虫并转发SEO渲染服务
  • redis-保姆级配置详解
  • 机器学习案例——《红楼梦》文本分析与关键词提取
  • 103、【OS】【Nuttx】【周边】文档构建渲染:Sphinx 配置文件
  • RabbitMQ核心架构与应用
  • Nginx性能优化与安全配置:打造高性能Web服务器
  • 模型驱动与分布式建模:技术深度与实战落地指南
  • 【慕伏白】CTFHub 技能树学习笔记 -- Web 前置技能之HTTP协议
  • 【Docker】搭建一个高性能的分布式对象存储服务 - MinIO
  • LeetCode热题100--146.LRU缓存--中等
  • 附046.集群管理-EFK日志解决方案-Filebeat
  • 20250815在荣品RD-RK3588-MID开发板的Android13下点卡迪的7寸LCD屏
  • 商城开发中,有哪些需要关注的网络安全问题
  • Android按电源键关机弹窗的删除
  • 紫金桥RealSCADA:国产工业大脑,智造安全基石
  • 金融业务安全增强方案:国密SM4/SM3加密+硬件加密机HSM+动态密钥管理+ShardingSphere加密
  • Redisson分布式锁实战指南:原理、用法与项目案例
  • 第五天~提取Arxml中描述信息New_CanCluster--Expert
  • 神经网络 小土堆pytorch记录
  • 关系型数据库核心组件:视图、函数与存储引擎详解
  • Vue3从入门到精通: 4.4 复杂状态管理模式与架构设计