
付费阅读
MyBuilder 1.3.17:前端产物包上传校验修复
一句话:你上传的前端产物包,之前会被插件自己的校验拒掉,这版修好了。
这版修了什么
1. 上传前端产物不再被误拒
上个版本加了一个「上传前校验产物包结构」的功能,结果判断文件路径时写错了:
// 原来的写法(有 off-by-one)
if (substr($n, -10) === '/nitro.json') { ... }
// '/nitro.json' 是 11 个字符,取最后 10 个 —— 永远不可能相等
后果是:所有「顶层带目录」的 zip 全部被判定为「里面找不到 nitro.json」,上传直接被拒。而官方交付的前端产物包正是这种结构——也就是说,用官方给的包上传,必然失败。
现在改成用 basename() 判断文件名,不再去数字符个数。
2. 客户包里的前端路径不再出现双斜杠
剥离目录层级时,取回来的前缀不含尾部斜杠,剥完会剩一个前导斜杠,拼起来就成了这样:
frontend/.output//nitro.json ← 双斜杠
这个坑很阴:Windows 上解压能凑巧跑起来,Linux 上会生成一个空名字的嵌套目录,客户执行 node .output/server/index.mjs 直接找不到文件,前台起不来。现已统一清理。
3. 产物结构校验收紧
server/index.mjs 的识别从「路径中任意位置包含」改成「以该路径结尾」,避免把无关目录里的同名文件误判成前端产物。
需要升级吗
| 你的当前版本 | 要不要升 | 原因 |
|---|---|---|
| 1.3.16 | 建议升 | 这版就是修它的 —— 不升的话前端产物包根本传不上去 |
| 1.3.15 | 必须升 | 同时带上 1.3.16 的修复 |
| 1.3.14 及更早 | 必须升 | 你还没有「前端产物包」功能,客户下载的包只有插件、没有前台 |
如果你从 1.3.14 升级,还顺带获得这些
- 前端产物包上传(1.3.15 新增):后台「全局基础数据 → 前端产物包」上传一次,客户下载的包就从「只有插件」变成「插件 + 前台 + 部署说明 + 已填好域名的 .env」的完整部署套件。
- 上传按钮白屏修复(1.3.16):之前点「上传」会跳到 admin-post.php 然后一片空白,因为表单 action 名和注册的钩子名差了几个字符。
升级注意
上传新版本后重启 PHP 服务——OPcache 不重启不会加载新代码,这是老问题但每次都有人忘。
升级完记得去「全局基础数据 → 前端产物包」确认产物还在(它在 uploads 目录,升级插件不会丢)。如果之前上传失败过,这版重新传一次就行。






