管理包管理工具的工具
2024年8月26日大约 2 分钟
管理包管理工具的工具
corepack 从 node14、node16 的最后两个版本内提供,是一个管控设置包管理器的默认官方工具。
目前仅管控 pnpm 和 yarn。
切换 node 版本后要及时开启 corepack
要及时地在全局运行以下命令:
corepack enable
开启 corepack 后会提供全局命令,具体效果见以下 gif 示意图。
以 node20.15.0 为例
以 node22.4.1 为例
这个故障和目前正在使用的 node 版本切换工具 nvmd(nvm-desktop)无关。单纯的 corepack 问题。
安装失败
比如这段全局安装的命令:
corepack install pnpm@9.15.0 -g
报错如下:
详情
PS E:\code\rzn\tests\2024-12-29\001> corepack install pnpm@9.15.0 -g
Installing pnpm@9.15.0...
Internal Error: Error when performing the request to https://registry.npmjs.org/pnpm/-/pnpm-9.15.0.tgz; for troubleshooting help, see https://github.com/nodejs/corepack#troubleshooting
at fetch (E:\store\nvm-desktop\20.18.0\node_modules\corepack\dist\lib\corepack.cjs:21609:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async fetchUrlStream (E:\store\nvm-desktop\20.18.0\node_modules\corepack\dist\lib\corepack.cjs:21639:20)
at async download (E:\store\nvm-desktop\20.18.0\node_modules\corepack\dist\lib\corepack.cjs:21762:18)
at async installVersion (E:\store\nvm-desktop\20.18.0\node_modules\corepack\dist\lib\corepack.cjs:21854:55)
at async Engine.ensurePackageManager (E:\store\nvm-desktop\20.18.0\node_modules\corepack\dist\lib\corepack.cjs:22310:32)
at async InstallGlobalCommand.installFromDescriptor (E:\store\nvm-desktop\20.18.0\node_modules\corepack\dist\lib\corepack.cjs:22707:5)
at async Promise.all (index 0)
at async InstallGlobalCommand.execute (E:\store\nvm-desktop\20.18.0\node_modules\corepack\dist\lib\corepack.cjs:22685:5)
at async InstallGlobalCommand.validateAndExecute (E:\store\nvm-desktop\20.18.0\node_modules\corepack\dist\lib\corepack.cjs:19835:22)
截图如下:
详情
问题定性
这属于典型的网络代理问题。由于我为了解决其他工具的网络问题,配置了很多环境变量,因此本问题我更加倾向于全局设置镜像源。设置 corepack 的镜像源为淘宝源,而不是官方镜像源。
解决过程
先去其他的目录内,运行命令 pnpm v pnpm@9.15.0
,以便查询相关信息。相关信息如下:
详情
PS E:\code\rzn\github-desktop-store\RPGMV-dev-notes> pnpm v pnpm@9.15.0
pnpm@9.15.0 | MIT | deps: none | versions: 1096
Fast, disk space efficient package manager
https://pnpm.io
keywords: pnpm9, dependency manager, install, installer, uninstall, remove, link, prune, shrinkwrap, lockfile, fast,
rapid, efficient, package.json, packages, dependencies, symlinks, hardlinks, modules, npm, package manager, monorepo, multi-package, workspace:*
bin: pnpm, pnpx
dist
.tarball: https://registry.npmmirror.com/pnpm/-/pnpm-9.15.0.tgz
.shasum: 8bfdb6d72b4d5fdf87d21d27f2bfbe2b21dd2629
.integrity: sha512-duI3l2CkMo7EQVgVvNZije5yevN3mqpMkU45RBVsQpmSGon5djge4QfUHxLPpLZmgcqccY8GaPoIMe1MbYulbA==
.unpackedSize: 17.5 MB
maintainers:
- zkochan <z@kochan.io>
- pnpmuser <publish-bot@pnpm.io>
dist-tags:
dev: 6.23.7-202112041634 latest-5: 5.18.10 latest: 9.15.2 next-9: 9.15.2
latest-1: 1.43.1 latest-6: 6.35.1 next-10: 10.0.0-rc.2 pr4475: 0.0.0-pr4475.1
latest-2: 2.25.7 latest-7: 7.33.5 next-6: 6.35.1
latest-3: 3.8.1 latest-8: 8.15.9 next-7: 7.33.7
latest-4: 4.14.4 latest-9: 9.15.2 next-8: 8.15.9
published 3 weeks ago by pnpmuser <publish-bot@pnpm.io>
目前 pnpm 是在淘宝镜像下查询的,注意到关键信息 tarball ,在淘宝源的有效 url 为
可以考虑让 corepack 更改镜像源为淘宝源,下载该 tarball 即可完成安装。
阅读文档
官方文档明确说明了可以配置 COREPACK_NPM_REGISTRY 环境变量。
全局配置
在本机全局的 .npmrc 内设置镜像源。
# 设置全局 corepack 的镜像源,处理corepack安装pnpm失败的故障
# https://github.com/nodejs/corepack#environment-variables
# https://github.com/nodejs/corepack/issues/67
# https://github.com/nodejs/corepack/issues/572
COREPACK_NPM_REGISTRY=https://registry.npmmirror.com/
至此已解决问题。