When the API said yes and the site says no
/docs/skill/vizen-troubleshootcurrentМашинный перевод с английского
Наша платформа принимает то, что игнорирует. Этот навык - список известных. Случаи и способ проверить что-либо вообще.
0.Спроси. before Вы пишете — ничего не стоит
POST /docs/validate
{"sections": [ … the same list you would PUT to /content-blocks/{id} … ]}Ответы на каждый path: applied, ignored (Принимается и ничего не делает), unknown (kind/value непонятым или unverified (schema Недоступно - читать why), с разрешенным values - Для энум-мисс. schema Это не значит, что собственность ignored. Ничего не написано, никаких прав не требуется..
Это делает не Проверьте ids Есть ли у вас какие-либо признаки, которые могут быть написаны, или shop data, и этот конечный пункт намеренно never прикоснуться к ним.
1. Уже написал? Тогда: действительно ли это так? ignored?
200 означает, что запись была сохранена, а не value Используется.Два чека, в order:
- Перечитайте объект.
GET /content-blocksи look в твоем value. Ушел или Изменился → письмо было отклонено по существу. - Открой. page в браузере. Присутствует в объекте, но отсутствует на экране → тот widget Не читать этот реквизит.
Проверки браузера должны быть level-1 Тень DOM: использовать локаторы Playwright и Ждать видимого элемента after навигационная система (/docs/troubleshooting §2). Это section также охватывает why а production networkidle Ждать можно повесить.
2. Известные молчаливые неудачи
| симптом | Причина | Исправлять |
|---|---|---|
| а filter Вернуть весь каталог | параметр, написанный без filter. prefix — ?category_id=168 проглатывают, total Оставаться в full count | filter.category_id |
| а value Вне рамок рисует default | unknown перечислять values принимаются молча | брать values из GET /docs/widgets |
| а link как бы text | href в siteHeader.links не поддерживается | {label, url} или {label, target:{type,id}} |
| a выпадающий или модальный вырезается в block край | Теневой хозяин имеет overflow: clip | смотреть vizen-own-markup, wrapper section |
| тот site Выглядит не так, как локальная папка — small заголовки, никаких пуль, никаких подчеркиваний, голые кнопки | витрина магазина's Tailwind preflight сбрасывает браузер по умолчанию, и level-3 widget долях page каскад | корабль base.css Под корень class; /docs/transfer §7 |
| fixed Переезды с предком | проверить вычисленные contain/transform и target браузер; container-type Только один не является окончательным | следовать /docs/own-markup §7.2 и мера before/after Свиток: распаковка не проясняет каждого предка |
| Стильная таблица из header спектакли на live site Но не в том, editor холст | Канва загружает только layout's <head> | move site-широкий CSS входить layout папка (transfer.mjs ./theme --theme <id>) |
| тот header не останавливаться | либо block sets props.overflow: "clip" (Поражение предков клипс sticky), Или ты попросила липкость внутри тебя own Накладка вместо накладки на block | vz-sticky на корневом узле, или props.position: "sticky"; Удалить старое fixed/spacer обходной путь только при замене его на рабочий sticky; Сохранить преднамеренное fixed дизайн |
а платформа siteHeader/siteMenu/siteFooter игнорировать props.position | Эти виды рисуют свои own группа; block wrapper never Бежит за ними | siteHeader имеет свой own props.sticky: true; Два других имеют none — own Наценка в комплекте вместо |
| а block наклеивать на live site Но не в том, editor preview | тот editor Канвас не спрашивает у wrapper для липкости | проверить shop URL. Ничего не исправить |
твой own class на block отсутствует из class= | Имена проверяются целиком и сбрасываются целиком.: max 3, ^[a-zA-Z_][a-zA-Z0-9_-]*$, Ничего не начиналось с vz- | Переименовать его; посмотреть vizen-own-markup §4 |
ты set props.wrapperClass и ваш CSS ничего не делает | тот CSS находится в level 1 document, Он находится внутри тени и cannot Смотри. wrapper | move Этот стиль вписывается в level 3 document |
Удаление не удается с invalid request body | DELETE нуждается в body | отправлять {} |
~~ан image URL 404-й на HEAD~~ | закрыт с 2026 по 08-20 — Ответы рециркулирующего HEAD и GET одинаково; HEAD Это отличный способ проверить, что image URL решать | — |
| два product cards на одном page | ограниченный layout block плюс resource's own упакованный card | смотреть vizen-chrome, card замена |
| а level-1 widget Для тех, кто не имеет site's шрифты и цвета | В обоих направлениях изолируется корень тени, поэтому layout's таблицы стилей never С 2026-09-13 они помещаются внутри корня тени, и ваша наценка завернута туда. .vz-theme-{doc} — тот theme применяется, и ваш own Правила все еще выигрывают. page не имеет layout В общем, или rule соединение (body.dark), который является never промокаемый | связывание layout (vizen-chrome §2а), или move это class на свой own корневой элемент |
| а level-2 menu Открывается только панель after Короткая пауза | Не жук. Сервер печатает панели в HTML в рамках бюджета узла (60) nodes); корень, который не помещался, загружает свою панель на first щелкнуть GET /categories?view=menu — Один запрос на вкладку | Ничего не починишь. own header Не пострадал: бюджет принадлежит платформе siteMenu |
| твой CSS Стили в стиле header И ничего else на page | а level-1 header Сохраняет свои CSS В тени своего корня (А) level-3 header's Стильная таблица достигает всего page — но не в том, editor холст) | move входить в layout's папка, Где он приземляется на всех page И в холсте: vizen-own-markup §6.2 |
а style, шрифт или <head> Метка появляется на одном page только | Он был загружен как page widget Вместо того чтобы layout папка | тот же самый — transfer.mjs ./theme --theme <id> |
| layout Стили применяются, но layout's script never бегать | Ты находишься /cart, /checkout, /account, /wishlist, /orders, /coupons, /deals или /dashboard — author code не исполняется в охраняемых зонах design | Ничего не исправлять; не планируйте там письменное поведение |
| твой script Работал над прямым попаданием и остановился after в-site щелкнуть | Навигация мягкая, code когда-то бегал load | переживать-init на document's vz:navigate event (detail.path), не в DOMContentLoaded |
body {} / :root {} от layout папка не применяется | Селектор представлял собой соединение (body.dark, body[data-x]) — только голый html/body/:root наносится на page корень | положите class на твоей own корневой элемент или использовать голый селектор |
PUT /html-documents/{id} на layout's Ответы на папки THEME_DOCUMENT_PROTECTED | папка's document Это услуга row; Меняется только через релизы. | POST /themes/{id}/site/releases → PUT bytes → …/publish |
Что-то тихое ignored который не указан здесь, относится к области document — backend-3D/docs/api-areas/ — как именованное дело.
3. Контрольный список приемки
Запускай все это before говорить owner Ты - это ты. done.
- [ ] тот pages Ты сделал это не касаться look Неизменный — проверьте дом page и два sections;
- [ ] тот page Открытие по прямой URL и щелкнув a link внутри site — Они отличаются друг от друга code Пути и сценарии ведут себя по-разному;
- [ ] after в-site click: раскрывают выпадающие окна, открываются модали, запускаются таймеры;
- [ ] тот header В нескольких ширинах, не только ваша;
- [ ] горизонтальной прокрутки на page body;
- [ ] тот cart Действительно принимает item — пресса button, смотреть на счетчик;
- [ ] тот text присутствует в сыром HTML (
curlИ рыскать по нему, иначе Поисковые системы не увидят этого; - [ ] images Они подаются через резизер, а не как оригиналы.;
- [ ] тот owner Он ясно говорит, что является обходным путем, а что нет..
4. Измерение, а не угадывание
Используйте браузер для проверки визуализированного page. Коды состояния cannot Скажи мне Открывается ли выпадающий или header Один пробег потратил 18% от его стоимости. steps на Это, и это было самое дешевое 18% в целом сборке - каждый вывод, что Выжившие пришли из измерения, и единственный вывод, который не выжил, пришел. Из чтения code вместо.
HTML widget (Папка / выпуск) — что обычно означает «ничего не изменилось»
- `PUT /html-documents/{id}` ответы `HTML_PROJECT_USE_RELEASE`. The document имеет active Релиз: изменить его можно только через релиз (
POST …/releasesсbase:"active"+ Изменился files → PUT bytes →POST …/releases/{rid}/publish). Name/description Пройти через PUT. - Файлы 404 в site правильно after publish. Посмотри на это. page source: Корень актива должен быть NEW освобождение (
/_html/{doc}/{rid}/). Только active релиз подается; старые риды отвечают 404 design. Твердо перезарядить page (тот html не каштан, то files Неизменный в пробеге). - Второй widget На том же page разбивает first один's images. The script Используется глобальный
window.VZ_ASSET_BASE, который последний widget Перезаписывайте. Прочитайте корень из wrapper вместо:document.currentScript?.closest('.vz-body')?.dataset.vzBase(встроенный илиdocument.querySelector('.vz-body-<id>')?.dataset.vzBase(external/defer). - `:root`/`body` Стили применяются на site Но не в вашем местном file, или наоборот. На шее site Они переписаны на
.vz-body-{doc}(оба в ряд<style>и освобождение's.cssfiles). Селекционеры какbody.darkНе трогай себя – надень такие классы на себя. own корневой элемент. - Публикуем ответы 422 `RELEASE_INVALID`. Читать
report.errors:ref.missing(а path Не в выпуске — проверьте чехол и папку),ref.outside(../снаружи папки),hash.mismatch(bytes отличается от заявленной sha — перезагрузка, сервер не «исправляет» дайджест),file.forbidden,sw.register. Предупреждения (page.extra,js.assets,img.large) не block. - `FILES_PENDING` (409). Некоторые
upload_urls были never PUT. Загрузить их и publish Опять же — освобождение id оставаться. - ZIP отвергнутый как слишком большой. The limit 60-й год MB по запросу; разделить медиа на first Отпустить и отправить остальное вместе с
base:"active". - The page Не менялся after `transfer.mjs`. С момента пересмотра 6 page только смонтированный after успешный publish; валидатор error оставляет page Нетронутые — исправить отчет и повторить.
- Отказ в освобождении компонента `422` с `component.manifest` или `COMPONENT_MANIFEST_INVALID`. А.
kind=componentосвобождение должно нестиcomponent.jsonрядом сindex.html; тот code Назвать обидчика field вref(params[0].key). Ключи есть^[a-z][a-z0-9_]{0,31}$, ≤ 32 из них, file ≤ 16 KB,selectНе нуждается в-emptyoptions, и аdefaultдолжен быть параметром's own type. Ан unknown type является error Нарочно — это type Именно это и решает побег.. - Отказ в освобождении компонента с `COMPONENT_TS_ERROR` / `COMPONENT_TS_CONFLICT`.
*.tsв компонентной папке компилируется на publish В родную сестру*.js: тот error перевозитьfile:line:col, Конфликт означает рукописныйapp.jsуже сидят рядом сapp.ts(drop Импортные пути не переписываются — пишите"./util.js", тот file Браузер fetches. - Компонент находится на page Показаны только дефолты. Писать path это
props.component.ref/props.component.paramsИ ничего else;props.paramsилиrefрядом сkindхранится, отвечает на 200 и отображает по умолчанию. key Этого нет в schema, или value Неправильное type, И это происходит так же тихо, как и раньше — читайте дальше page, Не то status code. - Компонент cannot быть размещены вообще.
active_release_idна document это0: Ни один опубликованный релиз не означает никакой разметки и нет schema. Опубликовать папку first; разобранный schema Возвращается какmanifestна document И на каждом выпуске, так never читатьcomponent.jsonчерез gateway. - Канва администратора показывает block Без стилей. Полотно загружается files через подписанный preview Если вы видите необработанную накладку, block Прочитал старый клиент — вновь открыл page editor. На шее live site то же самое document Хорошо.
Исходник: https://api.vizen.shop/docs/skill/vizen-troubleshoot?full=1