Promjene JavaScript koda u RoomOS makronaredbama

Ažurirali smo strojeve koji pokreću makronaredbe na RoomOS-u i kao rezultat tih ažuriranja neke JavaScript konvencije i funkcije više neće biti dostupne makronaredbama. Konkretno, funkcije povezane s CommonJS-om više nisu dostupne. Neki uobičajeni primjeri koda koji treba prepisati su:

  1. Zahtjev(), uključujući:
    • require('xapi') - potrebno je prepisati na standardni uvoz ECMAScript . Npr., const xapi = require('xapi') promijenjeno za uvoz xAPI iz 'xapi'
    • require.main
  2. modul, uključujući:
    • module.exports - treba prepisati na standardni ECMAScript izvoz
    • module.name - treba zamijeniti s _main_module_name()

Kako se to uključuje i isključuje?

Te promjene stupaju na snagu nakon što se xConfiguration makronaredbe EvaluateTranspiled prebace s True na False. Ova postavka prisutna je već duže vrijeme, a promjena se uvodi promjenom zadane vrijednosti u novim izdanjima iz True u False.

Ako se makronaredbe prekinu s ovom promjenom, izričito postavljanje preklopnika (xConfiguration Macros EvaluateTranspiled: True) kratkoročni je popravak koji će ih natjerati da rade kao i prije. Međutim, imajte na umu da je ovo samo privremeno rješenje: ovaj će prekidač nestati nakon prijelaznog razdoblja.

Slično tome, na starijim verzijama RoomOS-a ova se promjena može testirati bez nadogradnje postavljanjem prekidača na False.

Napomena: Ako je makronaredba spremljena na uređaju dok je prebacivanje False , a kasnije odlučite TURN prebacivanje natrag na True, možda će biti potrebno ponovno spremanje tih makronaredbi u uređivač makronaredbi.

Kada će te promjene stupiti na snagu?

Zadana vrijednost prekidača EvaluateTranspiled promijenjena je u False počevši od RoomOS May 2025 (11.28), što znači da će se uređaji prema zadanim postavkama prebacivati prilikom nadogradnje. U istoj verziji korak transpilacije prilikom spremanja makronaredbi putem XAPI-ja po zadanom je isključen. Ako je putem XAPI-ja potrebna transpilacija, mogućnost naredbe transpile mora biti izričito postavljena na true.

Počevši od RoomOS srpnja 2025 (11.30) dijagnostika će se prikazati kada je prekidač postavljen na True. I dalje će raditi kao i prije.

Ubuduće će se prekidač potpuno ukloniti i uređaj će se ponašati kao da je postavljen na False. Cilj nam je uvesti tu promjenu u studenome 2025. Taj se datum može promijeniti jer vidimo koliko naših kupaca može ažurirati svoje makronaredbe, ali vremenska crta mjeri se u mjesecima, a ne godinama. Točni datumi bit će objavljeni ovdje i u bilješkama o izdanju relevantnih izdanja RoomOS-a.

Svi korisnici koji, unatoč našim naporima u pokušaju da obavijestimo i informiramo o promjenama, vide da njihove makronaredbe ne uspiju kada promjene trajno budu na snazi u RoomOS-u mogu i dalje koristiti (do) šestomjesečno odgođeno ažuriranje softvera koje se pruža putem Control Huba za uređaje registrirane u oblaku kako bi odgodili promjenu.

Zašto je to potrebno? Tehnički detalji

Glavni pokretač ove promjene je taj što smo ažurirali naš JavaScript motor za korištenje QuickJS-a, koji služi kao moderno, ažurirano JavaScript vrijeme izvođenja za ugrađene sustave. Nakon toga, budući da više nije potreban s modernim JavaScript motorom, sada uklanjamo podršku za transpilaciju JavaScripta. Uklanjanje dodatnog koraka transpiliranja svih kodova smanjuje vrijeme učitavanja prilikom implementacije i izvršavanja koda, kao i smanjenje složenosti na platformi.

Prekidačem JavaScript motora upravljaju xConfiguration makronaredbe QuickJSEngine: Isključeno promijenjeno u Uključeno. Ova je promjena uvedena u RoomOS prosincu 2023 (11.11), a planiramo ukloniti ovaj konfiguracijski prekidač na istoj vremenskoj traci kao i EvaluateTranspiled.

Radimo ove promjene kako bismo osigurali da RoomOS radi do maksimuma i da vam možemo pomoći da na učinkovit i siguran način proširite implementaciju JavaScript proširenja.

Pročitajte više o makronaredbama na roomos.cisco.com.