Документация
Устранение неполадок рабочего стола
Определите сбойный процесс, проверьте реальную конечную точку и каталог данных и выполните восстановление, не путая предварительный просмотр с сохранением.
Автоматически переведено с английского. Смотреть оригинал на английском
Определите среду выполнения, прежде чем изменять ее.
Сеанс рабочего стола имеет отдельные границы сбоев: Vite предоставляет ресурсы внешнего интерфейса во время разработки; процесс Tauri Rust имеет встроенную интеграцию; вспомогательный модуль Bun обслуживает запросы приложений и обеспечивает постоянство; веб-просмотр SolidJS подключается к этому API. Пустое окно, тайм-аут загрузки, ответ 401 и пустой список проектов могут иметь разные причины.
| Режим запуска | Бэкэнд | Что он может установить |
|---|---|---|
Настольный пакет dev без дополнительного URL-адреса | Ложный клиент в памяти | Поддерживается поведение экрана на основе приборов, а не постоянное хранилище приложений. |
| Vite с URL и токеном | Выбранная бегущая сайдкар | Запросы от браузера к серверу и сохранение в каталоге этого сервера. |
Корень desktop:dev | Скомпилированная контролируемая сайдкар | Собственная оболочка, веб-просмотр, объединенные сервер/ресурсы и поток приложений. |
Приложение tauri:dev без существующего двоичного файла | Сгенерированная заглушка сайдкара | Изолированное поведение оболочки; заглушка не является полным API приложения. |
Запишите команду запуска и то, пришла ли конечная точка из переменных Tauri или Vite. Не удаляйте базу данных и не переустанавливайте зависимости только потому, что другая среда выполнения отображает другие данные.
Понимание времени запуска
Оболочка Rust генерирует токен запуска, разрешает данные приложения и каталоги миграции, а также создает целевой сайдкар. Ребенок связывает 127.0.0.1 на эфемерном порту. Он ждет, пока его публичность /api/health отвечает, а затем записывает событие готовности JSON с этим портом. Веб-просмотр вызывает get_sidecar_endpoint и создает управляемую среду выполнения API.
| Бюджет | Текущее значение | Значение |
|---|---|---|
| Готовое рукопожатие Shell | 60 секунд за запуск | Максимальное ожидание события готовности ребенка к использованию. |
| Автоматический перезапуск супервизора | Один | Неудавшийся дочерний элемент не перезапускается бесконечно. |
| Ожидание собственной конечной точки | 125 секунды | Два готовых бюджета плюс резерв. |
| Попытка подключения через веб-просмотр | 30 секунды | Тайм-аут работоспособности/соединения для попытки. |
| Цикл повтора веб-просмотра | 150 сек., 750 мс паузы | Повторно разрешает конечные точки, прежде чем предлагать ошибку по истечении времени ожидания. |
Retry перезапускает попытки подключения к веб-просмотру; он не пополняет исчерпанный бюджет надзора Rust. Устраните причину запуска и перезапустите приложение, когда супервизор достигнет состояния сбоя терминала. Порт, созданный до дочернего перезапуска, может быть устаревшим.
Проверьте порты и состояние отдельно
Вите использует localhost:1420 со строгим выбором порта, соответствующим настроенному URL-адресу разработки Tauri. Он терпит неудачу вместо того, чтобы молча перейти на другой порт. Порт сайдкара не имеет отношения к игре и меняется между запусками. Сопутствующий порт HTTPS является третьим прослушивателем (по умолчанию 8443), а Studio использует обратную связь 4396.
CADCAM_URL=http://127.0.0.1:43111
CADCAM_TOKEN=local-development-token
curl --max-time 5 --fail-with-body "$CADCAM_URL/api/health"
curl --max-time 5 --fail-with-body "$CADCAM_URL/health" -H "Authorization: Bearer $CADCAM_TOKEN"
curl --max-time 5 --fail-with-body "$CADCAM_URL/version" -H "Authorization: Bearer $CADCAM_TOKEN" Маршрут общественного здравоохранения возвращает статус и метку времени. Аутентифицированные системные маршруты раскрывают готовность и версию приложения. Исправный процесс не гарантирует, что все поставщики, запросы к базе данных или встроенные диалоги работают. Сравните API здоровья и Системный API при выборе зондов.
Если порт 1420 занят, намеренно определите и остановите существующий сервер разработки. Если запомненный порт API отказывается подключаться, прочитайте текущее событие готовности или повторно разрешите конечную точку Tauri, а не угадывайте соседние порты.
Воспроизведение с изолированной сайдкаром
Исходный процесс полезен для отделения проблем встроенного пакета от поведения сервера. Запустите это из корня репозитория в интерактивном терминале; он создает новый каталог данных и явно использует созданную папку миграции.
CADCAM_DIAGNOSTIC_DIR=$(mktemp -d /tmp/cadcamfun-desktop-guide.XXXXXX)
CADCAMFUN_TOKEN=local-development-token CADCAMFUN_DATA_DIR="$CADCAM_DIAGNOSTIC_DIR/data" CADCAMFUN_MIGRATIONS_DIR="$PWD/packages/db/drizzle" CADCAMFUN_AI_OFFLINE=true bun --no-env-file apps/sidecar/src/main.ts Скопируйте объявленный порт в переменные зонда во втором терминале. Автономный режим AI позволяет избежать зависимости от настроенной удаленной модели для базовой диагностики запуска; он не использует альтернативную локальную модель. Сервер наблюдает EOF стандартного ввода, явное событие завершения работы и обычные прерывания во время выполнения.
Исходный процесс использует текущие файлы. Собственный процесс использует скомпилированный исполняемый файл, уже созданный в разделе src-tauri/binaries. Если только скомпилированный запуск завершился неудачно, перестройте через bun run build:sidecar и проверить ресурсы объединения/миграции. Редактирование TypeScript не заменяет уже запущенный исполняемый файл.
Определите фактический путь к базе данных
| Process/tool | Выбор пути |
|---|---|
| Сайдкар, выпущенная Tauri | Tauri app_data_dir(), затем cadcamfun.db. |
| Ручная сайдкар | CADCAMFUN_DATA_DIR/cadcamfun.db. |
| Миграционный интерфейс командной строки | DATABASE_URL, в противном случае ./data/cadcamfun.db относительно каталога его процесса. |
Корень db:migrate обертка | Запускается в пакете базы данных, обычно выдавая packages/db/data/cadcamfun.db по умолчанию. |
| API локальной студии | CADCAMFUN_DB, затем DATABASE_URL, затем корень репозитория data/cadcamfun.db. |
Эти файлы не являются псевдонимами. Прежде чем искать недостающие чертежи, сопоставьте выбранный путь процесса. Инструменты браузера никогда не открывают эти файлы SQLite. Дополнительный модуль применяет миграцию только в том случае, если в его конфигурации указана папка миграции; его пропуск не приведет к автоматическому обнаружению папки исходного дерева.
Уровень базы данных включает WAL и внешние ключи. Перед обновлением существующей базы данных он автоматически создает резервную копию перед миграцией и сохраняет пять соответствующих резервных копий. Такая резервная копия не создается при каждом сохранении, неизмененном запуске, первом создании или тесте в памяти. Сохраняйте согласованную резервную копию с помощью процедуры базы данных/восстановления; копирование только основного файла работающей базы данных WAL может привести к пропуску зафиксированного содержимого WAL.
Чтение вывода протокола и журналов
В исходном дополнительном терминале стандартный вывод зарезервирован для событий протокола готовности/ошибки, а журналы приложений JSON передаются в поток stderr. В собственном приложении плагин ведения журнала Rust фиксирует события на стороне оболочки, включая контролируемый дочерний вывод. Оболочка редактирует строки, которые могут содержать учетные данные для запуска.
Родной get_logs_dir команда разрешает каталог журнала приложений операционной системы. Это более надежно, чем предположение об одном универсальном пути между системами. Диагностика разработчика внутри веб-представления может вызвать ее через существующий командный интерфейс Tauri; Открытие собственного пути ограничивается разрешенными папками и отказывается от типов исполняемых файлов.
Многоразовый компонент загрузочного экрана поддерживает дополнительный обратный вызов журнала просмотра, но текущий App.tsx не передает этот обратный вызов. Не думайте, что кнопка «Просмотр журналов» будет видна во время сбоя запуска. Держите терминал запуска разработки доступным или используйте собственный каталог журналов через соответствующую диагностическую поверхность.
Для отчета укажите режим запуска, несекретные данные/пути миграции, прошедшее время ожидания, текущую версию API, точный тег/сообщение об ошибке и последние соответствующие события запуска. Отредактируйте токены запуска/сеанса/устройства, ссылки на сопряжение, ключи моделей и материалы для подписи.
Отличать аутентификацию от пустых данных
Режим реального клиента браузера требует обоих VITE_SIDECAR_URL и VITE_SIDECAR_TOKEN. URL-адрес без токена не активирует поддельный резервный вариант; разрешение конечной точки не удается. Переменные должны быть указаны до запуска Vite. Обновление родительской оболочки не приводит к перенастройке уже работающего сервера.
VITE_SIDECAR_URL=http://127.0.0.1:43111 VITE_SIDECAR_TOKEN=local-development-token bun run --filter @cadcamfun/desktop dev Защищенные вызовы могут использовать контекст сеанса учетной записи в дополнение к токену приложения. Сопутствующие и автономные токены моста имеют более узкую область применения и не заменяют токен запуска. 401 требует диагностики учетных данных; 403 требует диагностики работы/доступа; об отсутствующем или недоступном проекте можно сообщить как 404.
Некоторые экраны, включая вкладки дочерних ресурсов проекта, в настоящее время превращают отдельные ошибки списка в пустые массивы. Пустая вкладка не является достаточным доказательством того, что записи были удалены. Прочтите соответствующее проект, рисунок, или траектория инструмента конечная точка перед воссозданием работы.
Действительный токен запуска состоит из 64 шестнадцатеричных символов (32 случайных байтов) и изменяется при каждом запуске. Токен другой формы оболочкой рабочего стола не был выдан.
Распознайте предварительный просмотр и собственные ограничения
Поддельный API обрабатывает выбранные проекты, чертежи, материалы, инструменты, станки, траектории инструмента, KV и пути генератора. Неподдерживаемые коллекции возвращают HTTP 501 с сообщением, относящимся к предварительной версии. Данные прибора принадлежат текущей странице. Успешное действие предварительного просмотра не может продемонстрировать сохранение организации, плагина, выставления счетов или поведения действующего поставщика.
Для собственных диалогов, операций с цепочкой ключей, панели задач, средства обновления и материалов macOS требуется хост Tauri и соответствующие возможности. Зарегистрированная команда по-прежнему может быть недоступна для веб-просмотра в соответствии с его конфигурацией возможностей. При открытии файла оболочка регистрирует поддерживаемые ассоциации и пересылает пути; это само по себе не доказывает, что конкретный редактор импортировал содержимое.
Сбои графики — еще одна граница. Ненулевой размер контейнера, видимые объекты/слои, разблокированный выбор и поддерживаемый WebGL являются необходимыми условиями для соответствующих взаимодействий в области просмотра. Отрисованная сетка является свидетельством рендеринга, а не успешного сохранения или проверки CAM. Используйте диагностика видового экрана для рабочей мощности, тайм-аута и поведения четырех представлений.
Восстановить настройки и проблемы с отображением
Общая запись предпочтений веб-просмотра: cadcamfun.settings. По умолчанию включаются миллиметры, системная тема, три десятичных знака, предпочтения GRBL, включенная привязка, допуск 0.01 мм и включенное стекло. Сохраненные поля проверяются независимо; недопустимые значения возвращаются, не вызывая сбоя оболочки. Полное/заблокированное локальное хранилище может помешать сохранению.
Изменение единиц отображения не приводит к изменению масштаба сохраненной геометрии САПР. Допуск документа распространяется через общий помощник настроек САПР/генератора/проверки. Некоторые значения объектов/поворотов явно используют градусы; углы рисования используют радианы. Проверьте контракт поля, прежде чем диагностировать числовое несоответствие как поврежденную геометрию.
Поведение Glass зависит от поддержки Tauri/macOS. В реализации используется Liquid Glass, где это поддерживается, яркость на старых macOS через плагин и непрозрачный резервный вариант, когда он недоступен или отключен. Изменения темы/материала не меняют геометрию, право собственности на проект или данные обработки.
Предпочитайте соответствующие настройки или функцию управления очисткой всего хранилища веб-просмотра. Это хранилище также может содержать передачи сеанса/редактора. Визуальный сброс настроек не является процедурой восстановления базы данных.
Отделение восстановления пользовательского интерфейса от доказательств обработки
Загруженный проект, успешное сохранение HTTP, анимированная траектория инструмента и сгенерированная ЧПУ — это разные наблюдения. Прежде чем полагаться на сохраненный результат обработки, проверьте точное ЧПУ, исходный чертеж/заготовку, сборки инструментов, корпус станка, выбранный пост, а также версию/проблемы проверки для этого результата.
Код моментального снимка CAM сохраняет данные ядра только тогда, когда текущий текст NC и его хэш совпадают. Портативная программа записывает, проверяет согласованность документа и может повторно оценивать захваченные запросы ядра. Редактирование ЧПУ или смена запаса может сделать предыдущие доказательства недействительными. Повторное открытие простого ЧПУ может проанализировать программу без восстановления того же производственного доказательства.
После сбоя или прерванного сохранения сначала проверьте сохраненную строку и ее версии. Модальное окно сохранения CAM записывает предыдущую программу перед обновлением, тогда как ручное сохранение подробной информации о траектории записывает обновленную версию. История проекта снова отдельная. Использовать сравнение истории чтобы выбрать путь восстановления.
Не преобразуйте неразрешенную проверку в принятую операцию, поскольку пользовательский интерфейс восстановлен. Повторно запустите соответствующую проверку фактических ресурсов и NC; проверка работоспособности приложения не имеет никакого влияния на безопасность машины.
Осуществляйте сортировку по одному сбою за раз
- Запишите режим запуска, версии процессов, порты и фактический каталог данных.
- Проверьте здоровье, затем защищённое чтение. Отделить подключение от авторизации.
- Прежде чем сбрасывать или удалять что-либо, проверьте структурированные ошибки запуска/миграции.
- Воспроизводите изолированный исходный процесс при подозрении на скомпилированную/родную проблему.
- Устраните выявленную причину, перезапустите соответствующий процесс и обновите устаревшие переменные конечной точки.
- Снова откройте сохраненный документ/программу и проверьте сохраненное состояние, версии, экспорт и текущую проверку.
Якоря реализации app/App.tsx, app/sidecar.ts, src-tauri/src/{sidecar,commands,lib}.rs, сайдкар main.ts/config.ts/shutdown.tsи жизненный цикл базы данных. Местное развитие предоставляет детали конфигурации; компаньон в паре обрабатывает отдельную границу сети.
Контрольный список запуска
- Присутствует ли двоичный файл сайдкара для этой платформы (
src-tauri/binaries/sidecar-<target triple>)?desktop:devстроит его;tauri:devможно использовать заглушку. - Являются ли миграции поэтапными?
src-tauri/resources/migrations?bun run build:sidecarилиbun scripts/build.ts --only=resourcesпереустанавливает их. - Распечатал ли сайдкар
readyв течение 60 секунд? Ищитеerrorстрока на стандартном выводе и журналы JSON на stderr в каталоге журналов (get_logs_dir). - Он перезапустился? Разрешен только один автоматический перезапуск; второй сбой оставляет статус на
failed. - Делает
GET /api/healthответить на указанный порт? Если это так, но защищенные маршруты возвращают 401, токен принадлежит другому запуску. - Доступен ли для записи каталог данных и не открыт ли файл базы данных другим процессом с несовместимыми миграциями?
| Таймер | Ценить | Владелец |
|---|---|---|
| Готовое рукопожатие | 60 с за попытку | Руководитель Rust |
| Автоматический перезапуск | 1 | Руководитель Rust |
| Ожидание конечной точки | 125 с (два рукопожатия + 5 с) | get_sidecar_endpoint |
| Бюджет восстановления Webview | 150 с, 30 с за попытку, 750 с между попытками | Веб-просмотр |
| Льгота на отключение | 2 с после строки завершения, затем процесс пожинается (до 5 с) | Руководитель Rust |
Чтение журналов
Журналы Sidecar — это строки JSON на stderr, хранящиеся отдельно от подтверждения связи stdout. Строки, которые могут содержать учетные данные, заменяются на [redacted: line may contain credentials] до того, как они будут записаны, поэтому ожидается отредактированная строка в журнале, а не повреждение. Если само рукопожатие содержало такую строку, сообщаемая ошибка запуска является маркером редактирования; прочитайте окружающие строки stderr для контекста.
Каталог журналов зависит от платформы. Получите это от get_logs_dir вместо того, чтобы угадывать путь, откройте его с помощью open_path, который принимает каталог журнала приложения.
Сообщения об ошибках и что они означают
| Сообщение | Откуда это взялось | Что делать |
|---|---|---|
| Очередь 3D-сетки заполнена. Уменьшите сложность сцены. | Очередь создания сетки видового экрана (128 заданий) | Скрыть или упростить тела; очередь очистилась |
| 3Время создания D-сетки истекло. Уменьшите сложность сцены. | Одно задание по созданию сетки превысило 15 с. | Упростите твердое тело; рабочий был перезапущен |
| Ни один поставщик AI не настроен. Добавьте ключ API в настройках AI. | Ассистентский поток, code: "config" | Добавьте ключ провайдера; все остальное не так |
| Устаревший журнал миграции не соответствует локальным миграциям | Обновление базы данных при запуске | Сохраните каталог данных; установите соответствующую версию |
| Запрос на включение не открыт | Объединение или закрытие объединенного/закрытого PR | Обновить список PR |
| Неизвестная версия <ред.> | Восстановление истории или журнал с плохой ревизией | Выберите ревизию из журнала |
| Plugin <id> may not use "<capability>": it was not granted at install time | Контекст плагина | Переустановите и предоставьте возможность или измените плагин. |
| Поворотные оси станка не могут достичь этой рабочей плоскости в пределах своих возможностей. | Индексированная обработка | Используйте другую настройку для этого лица |