3.2 KiB
3.2 KiB
店小秘编辑器「保存静默拦截」诊断法
症状
点「保存」→ 不发任何 POST、没有任何界面提示、无 .ant-form-item-has-error。
四个平台(速卖通/SHEIN/Temu)独立复现同一现象。
根因
校验确实失败了,但报错被 MYJ.message.error 吞掉——它只在屏幕角落闪一下,
而且有些报错是层层递进的(修完 A 才显示 B),所以肉眼和 DOM 扫描都抓不到。
诊断步骤
- 打开目标平台的建品页,填完所有能填的字段
- 在点保存之前注入钩子,劫持消息库:
window.__cap=[];
function wrap(obj,name,label){
const o=obj[name];
obj[name]=function(){
window.__cap.push(label+': '+[...arguments].map(a=>typeof a==='string'?a:JSON.stringify(a)).join(' '));
return o.apply(obj,arguments);
};
}
['error','warning','info','success'].forEach(k=>wrap(MYJ.message,k,'MYJ.'+k));
['error','warning','info','success'].forEach(k=>wrap(antd.message,k,'antd.'+k));
- 点「保存」,等 9 秒
- 读
window.__cap—— 被吞掉的真实报错就在里面
已定位的结果
| 平台 | 被吞掉的报错 | 性质 |
|---|---|---|
| 速卖通 | 商品说明书 → 请上传文件! |
类目相关的资质文件要求(Pet Medical 等类目强制) |
| SHEIN | 有必选规格未选择,请完善后再提交 |
类目定义的必选规格未选全 |
| Temu | 产地选择中国时,省份必填 → 产品变种不能为空! |
条件必填(选中国才出现省份)+ 变种 |
修复要点
- 速卖通:换一个不要求资质文件的类目即可(已验证:温度计从 Pet Medical 换到
Tools/仪器仪表/温湿度后立刻存进去) - SHEIN:需把类目要求的全部规格(不止主规格颜色)都选中
- Temu:省份必须走 UI 选择(直接改
region2Idstore 无效),且必须生成变种行
教训
必填项扫描(找 .ant-form-item-required 且为空)不够——
条件必填字段(Temu 省份)和类目相关的文件字段(速卖通说明书)都不在这个扫描范围内。
以后遇到「点了没反应」,第一步就该挂这个钩子。
为什么这条要单独记住(整轮唯一的方法论级收获)
在 SHEIN 和 Temu 上,我们花了几十轮去猜「到底哪个字段没填」:扫 DOM、翻 store、
逐个试填——全部无效。挂上钩子后,两个平台的真实报错一次全暴露
(SHEIN 有必选规格未选择、Temu 产地…省份必填 → 产品变种不能为空 → … 层层递进)。
所以它不是「一个调试技巧」,而是顺序问题:先让平台把话说出来,再动手填。
配套的三条(都是这一轮才踩出来的):
- 类目弹窗没确认关掉就往下走 → 后面的点击全被挡住,最后报的却是别的错 (Temu 第一轮 13 条都表现为「请上传预览图」)
.attr-label.required这类类目动态属性(下拉、勾选组)不填,只给一句 「产品信息中有错误,请检查」——必填扫描同样扫不到- 同一个弹窗可能是「单格」的(Temu 预览图:勾「全部」只作用当前行), N 行要走 N 遍