Dreamer Dreamer
首页
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

lycpan233

白日梦想家
首页
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • Mysql

  • Node

    • npm为什么父项目指定依赖版本后,可以影响到子项目的依赖
    • MacOS pnmp多个项目同个包,为什么没有共享存储空间?
    • pnpm 使用指南
    • pnpm 下载依赖更换源不生效
      • 背景
      • 复现场景
      • 结论
      • 解决方式
    • Commitizen + Commitlint + husky 实践
    • package.json 中波浪号~ 异或号^ 是什么意思?
  • Go

  • Docker

  • 后端
  • Node
lycpan233
2024-01-22
目录

pnpm 下载依赖更换源不生效

# 背景

今天下载依赖的时候,突然报错 WARN  GET https://registry.npm.taobao.org/cz-conventional-changelog error (CERT_HAS_EXPIRED). ,查阅信息以后发现是淘宝源的域名过期了。 后来就尝试更换域名进行下载包。发现不论是 CLI 更改,还是项目中的 .npmrc 更改都不生效。 纠结一天终于找到了原因。

# 复现场景

本地设置淘宝源, 项目设置私有仓库(下载私有包需要)。

  1. pnpm 下载所有依赖
  2. 域名过期后尝试多重换源方式。
    1. 本地换源。
    2. 项目换源。
    3. 指定临时源。

众所周知,npm 下包取源的规则是 临时 => 项目 => 用户 => 全局 。

但是在实际使用过程中有一个非常诡异的 case ,就是我本地项目注释源配置。 此时不论是采用临时指定源,还是使用某人源下载包均失败。 如图所示:

# 结论

经过验证,发现 pnpm 会记录首次下载依赖的源配置,在 add 新依赖的时候,它会对旧依赖从旧源里进行比对(这里是推测)。当项目里没有配置源的时候,它就采用了它记录的默认源地址。 这时候因为淘宝源的域名问题,导致访问失败。从而没办法下载新包。

# 解决方式

  1. 配置正确的源地址,私有包链接私有仓库,三方包走能用的镜像源站。
  2. rm -rf node_moduls
  3. pnpm install
编辑 (opens new window)
上次更新: 2025/04/15, 03:48:14
pnpm 使用指南
Commitizen + Commitlint + husky 实践

← pnpm 使用指南 Commitizen + Commitlint + husky 实践→

最近更新
01
docker基础概念
02-26
02
js 获取变量准确类型
02-19
03
Mysql SQL 优化思路
02-18
更多文章>
Theme by Vdoing | Copyright © 2023-2025 Dreamer | MIT License
粤ICP备2025379918号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式