Repository navigation
Replies: 1 comment
|
补充一个普通用户视角(楼主的根因分析——installBundle 的 HMR 守卫——看懂了,先谢过): 前提:我在官方插件界面里直接更新插件——更新失败。报错原文是:
这句话对用户的问题在于:只说"拒绝执行(already-installed)",不告诉用户下一步做什么。小白看到的第一反应是"软件出问题了"——实际上它只是官方不让你热更新。把这一点说破,一句话就能省掉普通用户的全部排查时间。 实测恢复路径:"卸载 → 官方重启 → 重新安装",可以恢复;升级指南里本来就有对应流程(先 removeBundle 再 installBundle)。 两个低成本改进建议:
另外回应楼主的 updateBundle 原子更新方案:支持——临时目录装好、成功再替换、失败 profile 不变、返回 restart-required,这个方向能从根上消掉这个错误。在它上线之前,上面第 1 条是零成本的止血,两者不冲突。 版本环境(v0.2.1 系列五个正式版本,社区里不同用户用的版本不同,供对号入座):
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
现象:DSH 2.0.19-next,ds-bot 从 0.2.0 升 0.2.2,今天 11:14 连续失败了 10 次,pnpm 一次都没运行。
根因:贴了 installBundle 里那段前置判断。在 HMR 模式下,只要 profile 依赖里已经有同名包,就直接拒绝。inspect() 里也有一样的判断。
影响:插件市场(#896、#900)和 ds-bot(#505)各自写了一套「先删再装加回滚」的绕过。插件更新自己时,等于先把正在运行的自己删掉;如果中途失败,插件就没了。
期望:提供原子的 updateBundle。先在临时目录装好新版本,成功了再替换;失败时 profile 不变;结果返回 restart-required。
临时绕过:用 DSH 自带的 pnpm 执行 add ds-bot@x --save-exact,这次实际验证过可行。
All reactions