Zmiany w kodzie JavaScript w makrach RoomOS

Zaktualizowaliśmy maszynerię obsługującą makra w systemie RoomOS i w wyniku tych aktualizacji niektóre konwencje i funkcje JavaScript nie będą już dostępne dla makr. W szczególności funkcje związane z CommonJS nie są już dostępne. Niektóre typowe przykłady kodu wymagającego przepisania to:

  1. require(), w tym:
    • require('xapi') - wymaga przepisania do standardowego importu ECMAScript . Np. const xapi = require('xapi') zmieniono, aby zaimportować xapi z 'xapi'
    • require.main
  2. moduł, w tym:
    • module.exports - wymaga przepisania do standardowego eksportu ECMAScript
    • module.name - należy zastąpić ciągiem _main_module_name()

Jak to jest włączane i wyłączane?

Te zmiany zaczynają obowiązywać, gdy xConfiguration Macros EvaluateTranspiled zostanie przełączony z True na False. To ustawienie jest obecne od dłuższego czasu, a zmiana jest wprowadzana przez zmianę wartości domyślnej w nowych wersjach z Prawda na Fałsz.

Jeśli makra ulegną uszkodzeniu w wyniku tej zmiany, jawne ustawienie przełącznika z powrotem (xConfiguration Macros EvaluateTranspiled: True) jest krótkoterminowym rozwiązaniem, aby działały jak poprzednio. Należy jednak pamiętać, że jest to tylko rozwiązanie tymczasowe: ten przełącznik zniknie po okresie przejściowym.

Podobnie, w starszych wersjach RoomOS tę zmianę można przetestować bez aktualizacji, ustawiając przełącznik na False.

Uwaga: Jeśli makro zostanie zapisane na urządzeniu , gdy przełącznik ma wartość Fałsz , a później zdecydujesz się na TURN przełącznik z powrotem na wartość Prawda, może być konieczne ponowne zapisanie tych makr w edytorze makr.

Kiedy te zmiany wejdą w życie?

Domyślna wartość przełącznika EvaluateTranspiled została zmieniona na False , począwszy od RoomOS May 2025 (11.28), co oznacza, że urządzenia będą przełączane domyślnie po uaktualnieniu. W tej samej wersji krok transkompilacji podczas zapisywania makr za pośrednictwem XAPI jest domyślnie wyłączony. Jeśli wymagana jest transpilacja za pośrednictwem XAPI, opcja polecenia transpile musi być jawnie ustawiona na true.

Począwszy od RoomOS July 2025 (11.30) diagnostyka będzie wyświetlana, gdy przełącznik jest ustawiony na True. Nadal będzie działać jak poprzednio.

Idąc dalej, przełącznik zostanie całkowicie usunięty, a urządzenie będzie zachowywać się tak, jakby było ustawione na False. Zamierzamy wprowadzić tę zmianę w listopadzie 2025 r. Ta data może ulec zmianie, gdy zobaczymy, ilu naszych klientów może aktualizować swoje makra, ale oś czasu jest mierzona w miesiącach, a nie latach. Dokładne daty zostaną opublikowane tutaj oraz w informacjach o wydaniu odpowiednich wersji RoomOS.

Wszyscy klienci, którzy pomimo naszych najlepszych starań w zakresie powiadamiania i informowania o zmianach, widzą, że ich makra nie działają, gdy zmiany są na stałe wprowadzone w RoomOS, mogą nadal korzystać z (do) 6-miesięcznej opóźnionej aktualizacji oprogramowania, która jest dostarczana za pośrednictwem Centrum sterowania dla urządzeń zarejestrowanych w chmurze, aby opóźnić zmianę.

Dlaczego jest to konieczne? Szczegóły techniczne

Głównym motorem tej zmiany jest to, że zaktualizowaliśmy nasz silnik JavaScript, aby korzystał z QuickJS, który służy jako nowoczesne, zaktualizowane środowisko uruchomieniowe JavaScript dla systemów wbudowanych. Następnie, ponieważ nie jest już potrzebny w nowoczesnym silniku JavaScript, usuwamy obsługę transkompilacji JavaScript. Usunięcie dodatkowego kroku transpilacji całego kodu skraca czas ładowania podczas wdrażania i wykonywania kodu, a także zmniejsza złożoność platformy.

Przełącznik silnika JavaScript jest kontrolowany przez xConfiguration Macros QuickJSEngine: Off changed to On. Ta zmiana została wprowadzona w RoomOS December 2023 (11.11) i planujemy usunąć ten przełącznik konfiguracji na tej samej osi czasu, co EvaluateTranspiled.

Wprowadzamy te zmiany, aby zapewnić, że RoomOS działa maksymalnie i że możemy pomóc Ci skalować wdrażanie rozszerzeń JavaScript w wydajny i bezpieczny sposób.

Przeczytaj więcej o makrach na roomos.cisco.com.