Известные проблемы по версиям SDK
Используйте @tv/extension-sdk 1.15.1 или новее. Эта страница — на случай, если это невозможно или модуль создан более старым выпуском: здесь, от новых к старым, перечислено, что исправил каждый выпуск из того, на что вы иначе наткнётесь, и что с этим сделать вручную. Все изменения — в журнале изменений; здесь только те, что ломают какой-либо шаг.
Проблемы бывают двух видов:
- SDK — в CLI или библиотеке. Обновление их убирает.
npx @tv/extension-sdkзапускает копию изnode_modulesвашего модуля, поэтому обновляйте её там:pnpm add -w @tv/extension-sdk@^1.15.1. - Каркас — в файлах, которые записал
init-module. Обновление SDK не меняет уже созданный модуль, поэтому поправьте файл, как сказано в таблице, или создайте каркас заново и перенесите в него свой код.
Исправлено в 1.15.1
| Вид | Что не так | В более старой версии |
|---|---|---|
| SDK | В Windows login падает уже после подтверждения в браузере: … longer than the platform limit of 2560 chars. Сессия больше, чем вмещает диспетчер учётных данных Windows. | Используйте API-ключ с портала в TV_API_TOKEN либо задайте TV_SDK_TOKEN_STORE=file перед login и не снимайте её для всех последующих команд. |
| SDK | sandbox connect печатает URL tv-api и токен в виде строк export. Если их применить, sandbox install --sandbox ищет песочницу в самой песочнице, с её токеном, и падает. | Не применяйте их в терминале, из которого запускаете команды sandbox. Если уже применили, выполните unset TV_API_URL TV_API_TOKEN и снова экспортируйте ключ с портала. |
| SDK | sandbox install --sandbox=… --token=tvk_… падает с 401 при регистрации манифеста: ключ с портала отправляется и в песочницу. | Положите ключ с портала в TV_API_TOKEN и не передавайте --token. |
| SDK | После любого 401 или 403 sandbox install печатает This is expected today: … ask for the module to be registered for you. С 2026-09-19 это неправда. | Не обращайте внимания на пояснение и проверьте учётные данные по таблице Если что-то не так. |
| SDK | sandbox create, list и connect показывают slug и organizationId только с --format=json, а create не печатает строку для запроса входа. | Выполните npx @tv/extension-sdk sandbox list --format=json и пришлите нам только эти два значения. В том же выводе есть apiToken каждой песочницы, он остаётся секретом. |
| SDK | sandbox create --help (и любая sandbox <команда> --help) отвечает Unknown flag: --help с кодом выхода 2. | npx @tv/extension-sdk sandbox --help печатает справку по всем командам. |
| Каркас | Автономная страница (pnpm dev) становится пустой, как только Shell вызывает useQuery: No QueryClient set, use QueryClientProvider to set one. | Оберните дерево в src/main.tsx в QueryClientProvider, самым внешним, как в разделе Соберите фронтенд. |
| Каркас | В package.json нет поля packageManager, поэтому вместо 10.18.2 запускается глобально установленный pnpm 11 и падает на свежем выпуске @tv с ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION. | Добавьте "packageManager": "pnpm@10.18.2" в package.json и установите зависимости заново. |
| Каркас | Первый pnpm install предупреждает о peer-зависимостях (i18next ^25 против react-i18next 17, @tv/ui ^1.4.1 против SDK), а pnpm lint падает с eslint: command not found. | Задайте i18next ^26.2.0, поднимите @tv/ui до ^2.2.0 или удалите его, если его никто не импортирует, и удалите скрипт lint: статическая проверка — pnpm typecheck. |
| Каркас | init-module --external без --scope выдаёт модулю идентичность Tango Vision: id и имя пакета в @tv, автор «Tango Vision». | Создайте каркас заново с --scope и --author (шаг 1) или вручную поменяйте id и author в module-manifest.json и name в package.json, сохранив часть module-<slug>. |
Исправлено в 1.15.0
| Вид | Что не так | В более старой версии |
|---|---|---|
| Каркас | Контейнер федерации называется tv-module-<slug>, а платформа ищет slug в camelCase, поэтому оболочка не находит ваш модуль в его же remoteEntry.js. | В vite.config.ts задайте name федерации равным slug в camelCase: hello для hello, workOrders для work-orders. |
| Каркас | react-router и react-router-dom не разделяются с хостом, поэтому Shell с <Routes> падает внутри Building OS: Cannot destructure property 'basename' of 'React.useContext(...)' as it is null. | Добавьте оба в shared в vite.config.ts и в dependencies (^7.0.0) и оберните <Shell /> в src/main.tsx в <BrowserRouter> для автономной страницы. |
| Каркас | Комментарий в начале src/Shell.tsx велит использовать PlatformContext из @tv/extension-sdk/react и «общий клиент axios». Первое падает внутри Building OS, второго не существует. | Не следуйте ему. Используйте useSelectedBuildingId() и authorizationHeader(): Вызов API из модуля. |
| SDK | getAccessToken(), authorizationHeader() и resolveAccessToken() ещё нет, так что поддерживаемого способа аутентифицировать вызовы API у модуля нет. | Обновите SDK. Не читайте вместо этого localStorage['access_token']: оболочка песочницы его не записывает. |
Исправлено в 1.14.1
| Вид | Что не так | В более старой версии |
|---|---|---|
| Каркас | Модуль, созданный версией 1.14.0, не собирается: "useQuery" is not exported by "__vite-optional-peer-dep:@tanstack/react-query:@tv/extension-sdk", и remoteEntry.js не появляется. | pnpm add -w @tanstack/react-query@^5 |
До 1.14.0
| Вид | Что не так | В более старой версии |
|---|---|---|
| SDK | Нет init-module --external. CI, который он генерирует, вызывает закрытые actions Tango Vision и падает за пределами нашей организации. | Обновите SDK и создайте каркас заново с --external. |
| SDK | Нет sandbox install, а в каркасе нет скриптов dev:remote / serve:remote. | Обновите SDK и добавьте скрипты вручную, как в разделе Отдавайте remote со своей машины. |
| SDK | sandbox create --type=university отклоняется с Invalid --type. | Обновите SDK или используйте office либо mall. |