Modificări ale codului JavaScript în macrocomenzile RoomOS

Am actualizat mașinile 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:

  1. necesită(), inclusiv:
    • require('xapi') - necesită rescriere la importul ECMAScript standard. De exemplu, const xapi = require('xapi') schimbat pentru a importa xapi din 'xapi'
    • require.main
  2. modul, inclusiv:
    • module.exports - necesită rescriere la exportul ECMAScript standard
    • module.name - ar trebui înlocuit cu _main_module_name()

Cum este activat și dezactivat?

Aceste modificări intră în vigoare odată ce xConfiguration Macros EvaluateTranspiled este comutat de la True la False. Această setare este prezentă de mult timp și este lansată prin schimbarea valorii implicite în versiunile noi de la Adevărat la Fals.

Dacă macrocomenzile se întrerup la această modificare, setarea explicită a comutatorului î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ă: Acest comutator va dispărea după o perioadă de tranziție.

În mod similar, pe versiunile mai vechi de RoomOS, această modificare poate fi testată fără upgrade, setând comutatorul la False.

notițe: Dacă o macrocomandă este salvată pe dispozitiv în timp ce comutatorul este fals și ulterior decideți să TURN comutatorul înapoi la adevărat, poate fi necesară resalvarea acelor macrocomenzi în editorul de macrocomenzi.

Când vor intra în vigoare aceste modificări?

Valoarea implicită a comutatorului EvaluateTranspiled a fost schimbată la False începând cu RoomOS mai 2025 (11.28), ceea ce înseamnă că dispozitivele vor comutaimplicit 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ă în mod explicit la true.

Începând cu RoomOS iulie 2025 (11.30) un diagnostic va fi afișat atunci când comutatorul este setat la Adevărat. 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 la False. Ne propunem să implementăm această modificare în noiembrie 2025. Această dată se poate schimba pe măsură ce vedem câți dintre clienții noștri își pot actualiza macrocomenzile, dar cronologia este măsurată în luni, nu în ani. Datele exacte vor fi publicate aici și în notele de lansare ale versiunilor RoomOS relevante.

Orice clienți care, în ciuda eforturilor noastre cele mai mari în încercarea de a notifica și informa despre modificări, văd că macrocomenzile lor nu reușesc atunci când modificările sunt în vigoare permanent în RoomOS pot utiliza în continuare actualizarea software cu (până la) 6 luni întârziere 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ă schimbare este că am actualizat motorul JavaScript pentru a utiliza QuickJS, care servește ca o durată de rulare JavaScript modernă și actualizată pentru sistemele încorporate. După aceea, deoarece nu mai este necesar cu un motor JavaScript modern, eliminăm acum suportul pentru transpilarea JavaScript. Eliminarea pasului suplimentar de transpilare 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 macrocomenzile xConfiguration QuickJSEngine: Off schimbat în On. Această modificare a fost lansată în RoomOS decembrie 2023 (11.11) și intenționăm să eliminăm această configurație pentru a comuta în 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-un mod eficient și sigur.

Citiți mai multe despre macrocomenzi pe roomos.cisco.com.