Files
dianxiaomi-crossborder-play…/静默拦截诊断/HOOK.md
T

62 lines
3.2 KiB
Markdown
Raw Blame History

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