解决 Corepack 报错:Cannot find matching keyid
2026-06-03#pnpm
最近在搭建一个使用 Node.js 的 Pulumi 项目时,遇到了 Cannot find matching keyid 的错误,原因是 Corepack 的安全密钥已过期。
错误信息 🔗
pulumi install
Installing dependencies...
/home/xxx/.local/share/fnm/node-versions/v22.13.1/installation/lib/node_modules/corepack/dist/lib/corepack.cjs:21535
if (key == null || signature == null) throw new Error(`Cannot find matching keyid: ${JSON.stringify({ signatures, keys })}`);
^
Error: Cannot find matching keyid: {"signatures":[{"sig":"MEQCIA4Pa4uh9IDxNn1FDlbUrTriLjYti+RvKXhyOyliqalNAiAonVnVrXFp7Tmm7Zj3e4QqgNuU5XkKCCr6f7GSvaNfsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"keys":[{"expires":null,"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","keytype":"ecdsa-sha2-nistp256","scheme":"ecdsa-sha2-nistp256","key":"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE1Olb3zMAFFxXKHiIkQO5cJ3Yhl5i6UPp+IhuteBJbuHcA5UogKo0EWtlWwW6KSaKoTNEYL7JlCQiVnkhBktUgg=="}]}
at verifySignature (/home/xxx/.local/share/fnm/node-versions/v22.13.1/installation/lib/node_modules/corepack/dist/lib/corepack.cjs:21535:47)
at fetchLatestStableVersion (/home/xxx/.local/share/fnm/node-versions/v22.13.1/installation/lib/node_modules/corepack/dist/lib/corepack.cjs:21553:5)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async fetchLatestStableVersion2 (/home/xxx/.local/share/fnm/node-versions/v22.13.1/installation/lib/node_modules/corepack/dist/lib/corepack.cjs:21672:14)
at async Engine.getDefaultVersion (/home/xxx/.local/share/fnm/node-versions/v22.13.1/installation/lib/node_modules/corepack/dist/lib/corepack.cjs:22298:23)
at async Engine.executePackageManagerRequest (/home/xxx/.local/share/fnm/node-versions/v22.13.1/installation/lib/node_modules/corepack/dist/lib/corepack.cjs:22396:47)
at async Object.runMain (/home/xxx/.local/share/fnm/node-versions/v22.13.1/installation/lib/node_modules/corepack/dist/lib/corepack.cjs:23102:5)
Node.js v20.20.2
error: installing dependencies: exit status 1
原因和解决办法 🔗
该错误的原因是 Corepack 的安全密钥已经过期,无法验证新版 pnpm(如 v10.1.0+)的签名。这是因为 2025 年初 npm 仓库轮换了签名密钥,但 Corepack 内置的密钥没有同步更新。
重新启用 Corepack 即可更新密钥:
corepack enable
之后再次执行 pnpm install,Corepack 会重新下载 pnpm,询问时确认即可:
pnpm install
! Corepack is about to download https://registry.npmjs.org/pnpm/-/pnpm-9.15.0.tgz
? Do you want to continue? [Y/n] y