# Цикл разработки и горячая замена — Mercury LMS > MX2. `mx dev` обслуживает приложение на 127.0.0.1, каждые 10 мс опрашивает файлы, которые запрашивала страница, компилирует изменения и передаёт `update`, `full-reload` или `error` через сокет `vite-hmr` по адресу `/`. Без Node и Vite. ## Когда читать При работе с `mx dev`, если нужно понять, почему правка перезагрузила страницу вместо замены на месте, или разобраться с ответами сервера разработки 403/400/500. ## Использование `usage: mx dev [--root ] [--port ] [--importmap]` → выводит `listening http://127.0.0.1:/`. ## Что обслуживается - `/`: index.html + карта импортов на месте `` + `` + скрипт клиента. - `/@mx/client.js`: клиент горячей замены (`import.meta.hot`: `data`, `accept`, `dispose`, `invalidate`). - `/@mx//`: участники (из исходников — компилируются и отслеживаются; из сборки — не отслеживаются). - Файлы приложения: `js mjs jsx ts mts tsx` компилируются по запросу; остальные отдаются без изменений. ## Правка - Те же байты (SHA-256) → ничего. Не модуль → `full-reload`. Модуль ещё не выполнялся → `full-reload`. - Отказ компиляции → `error` (`: `); страница сохраняет работавший модуль, а URL модуля возвращает 500 до исправления. - Иначе обход импортирующих модулей до принимающих обновление → одно `update`; импорты получают `?t=`. Принимающего модуля нет → `full-reload`. - Приём определяется `hmrRoot` в результате компиляции, а не совпадением текста. Hypercompiler задаёт его для модуля, который импортирует `render`/`hydrate` из `@fiberfx/hyperscript`. Модуль модели без рендеринга вызывает перезагрузку. - `invalidate` → обход от импортирующих модулей; возврат к началу → `full-reload`. ## Защита - Host не относится к loopback → 403 `this host name is not allowed: mx dev answers loopback names only`. - Origin сокета не относится к loopback → 403. - Путь или протокол сокета, отличные от `/` + `vite-hmr`/`vite-ping` → 400 `an HMR socket is at / and speaks vite-hmr or vite-ping`. - Сокет страницы `vite-hmr` без `?token=` → 400. ## Отказ рабочей области ` is both 's replace () and the mx.work's member (): remove the replace, or the member from mx.work, or build with MXWORK=off`. Замена, указывающая на собственный каталог участника, допускается. ## Текущие ограничения Правка приложения на этом сайте применяется на месте, затем следует одна перезагрузка, причина которой исследуется. Правка исходников участника вызывает полную перезагрузку. Замену модели Hypergraph `mx dev` пока не обеспечивает. ## Не выдавать `vite`, `vite.config.*`, `npm run dev` или написанный вручную `import.meta.hot.accept` с целью включить горячую замену модуля без рендеринга: mx не учитывает такой текст. ## Далее - MX3, сборка и поставка: /ru/mx/build - Эта текстовая версия: /ru/mx/dev/llms.txt ## Навигация - [Страница в браузере](/ru/mx/dev) - [Индекс для агентов](/ru/llms.txt) - [Все английские текстовые версии](/llms-full.txt) - [Карта сайта](/sitemap.xml) - [Текст курса](/ru/mx/llms.txt)