Modificări ale codului JavaScript în macrocomenzile RoomOS
Am actualizat utilajele care rulează macrocomenzile pe RoomOS și, ca urmare a acestor actualizări, unele convenții și funcții JavaScript nu vor mai fi disponibile pentru macrocomenzi. În special, funcțiile legate de CommonJS nu mai sunt disponibile. Câteva exemple comune de cod care necesită rescriere sunt:
require(), inclusiv:require('xapi')- are nevoie de rescriere la standardul ECimportMAScript. De exemplu,const xapi = require('xapi')schimbat laimport xapi from 'xapi'require.main
module, inclusiv:module.exports- are nevoie de rescriere la standardul ECMAScriptexportmodule.name- ar trebui înlocuit cu_main_module_name()
Cum se activează și se oprește acest lucru?
Aceste modificări intră în vigoare odată xConfiguration Macros EvaluateTranspiledce sunt comutate de la Truela False. Această setare este prezentă de mult timp, iar modificarea este lansată prin modificarea valorii implicite în noile versiuni de la la Truela False.
Dacă macrocomenzile se rup la această modificare, setarea explicită a comutării înapoi (xConfiguration Macros EvaluateTranspiled: True) este o soluție pe termen scurt pentru a le face să funcționeze ca înainte. Rețineți, totuși, că aceasta este doar o soluție temporară: această comutare va dispărea după o perioadă de tranziție.
În mod similar, pe versiunile RoomOS mai vechi, această modificare poate fi testată fără actualizare prin setarea comutării la False.
Notă: Dacă o macrocomandă este salvată pe dispozitiv în timp ce comutatorul este Falseși ulterior decideți să întoarceți comutatorul True, este posibil să fie necesară resalvarea acelor macrocomenzi în editorul de macrocomenzi.
Când vor intra în vigoare aceste modificări?
Valoarea implicită a EvaluateTranspiledcomutării a fost modificată Falseîncepând cu RoomOS mai 2025 (11.28), ceea ce înseamnă că dispozitivele vor comuta implicit atunci când sunt actualizate. În aceeași versiune, pasul de transpilare la salvarea macrocomenzilor prin XAPI este dezactivat în mod implicit. Dacă transpilarea este necesară prin XAPI, opțiunea de comandă transpile trebuie setată explicit la true.
Începând cu RoomOS iulie 2025 (11.30) va fi afișat un diagnostic atunci când comutatorul este setat la. True Va funcționa în continuare ca înainte.
Mergând mai departe, comutatorul va fi eliminat cu totul și dispozitivul se va comporta ca și cum ar fi fost setat False. Ne propunem să lansăm această modificare în RoomOS noiembrie 2026 (27. 0).
Clienții care, în ciuda eforturilor depuse în încercarea de a notifica și de a informa despre modificări, văd că macrocomenzile lor eșuează atunci când modificările sunt permanent în vigoare în RoomOS pot utiliza în continuare actualizarea software cu întârziere de până la 6 luni care este furnizată prin Control Hub pentru dispozitivele înregistrate în cloud pentru a întârzia modificarea.
De ce este necesar acest lucru? Detalii tehnice
Principalul driver pentru această modificare este că am actualizat motorul nostru JavaScript pentru a utiliza QuickJS, care servește ca un runtime JavaScript modern, actualizat pentru sistemele încorporate. După aceea, din moment ce nu mai este necesar cu un motor JavaScript modern, acum eliminăm suportul pentru transpilarea JavaScript. Eliminarea pasului suplimentar de transpunere a întregului cod reduce timpul de încărcare la implementarea și executarea codului, precum și reducerea complexității în platformă.
Comutatorul motorului JavaScript este controlat de xConfiguration Macros QuickJSEngine: Offschimbat la On. Această modificare a fost lansată în RoomOS decembrie 2023 (11.11) și intenționăm să eliminăm acest comutator de configurare pe aceeași cronologie ca. EvaluateTranspiled
Facem aceste modificări pentru a ne asigura că RoomOS funcționează la maximum și că vă putem ajuta să scalați implementarea extensiilor JavaScript într-o manieră eficientă și sigură.
Citiți mai multe despre macrocomenzi pe room os.cisco.com.