diff --git a/deploy.sh b/deploy.sh index 210f85f0..a488ce11 100755 --- a/deploy.sh +++ b/deploy.sh @@ -56,10 +56,16 @@ assert_pnpm_version() { fi actual="$(pnpm -v 2>/dev/null | tail -1 | tr -d '[:space:]' || true)" if [ "$actual" != "$expect" ]; then - echo "❌ pnpm 版本断言失败:package.json pin=$expect,实读 pnpm -v=${actual:-<空>}" - echo " 多为 corepack lastKnownGood 漂移(/root/.cache/node/corepack/lastKnownGood.json)" - echo " 修法:HOME=/root corepack prepare pnpm@$expect --activate | 中止(生产未被触碰)" - exit 1 + echo "⚠️ pnpm 版本断言不匹配:package.json pin=$expect,实读 pnpm -v=${actual:-<空>}" + echo " 尝试自愈:corepack prepare pnpm@$expect --activate(integrity 依 packageManager 的 sha512 校验)" + corepack prepare "pnpm@$expect" --activate >/dev/null 2>&1 || true + actual="$(pnpm -v 2>/dev/null | tail -1 | tr -d '[:space:]' || true)" + if [ "$actual" != "$expect" ]; then + echo "❌ pnpm 版本断言失败(自愈未成功):pin=$expect,实读=${actual:-<空>}" + echo " 多为 corepack lastKnownGood 漂移或离线/缓存缺失;中止(生产未被触碰)" + exit 1 + fi + echo " ✓ 自愈成功:pnpm $actual == package.json pin $expect" fi echo " ✓ pnpm 版本断言通过:pnpm $actual == package.json pin $expect" }