Transpile devacion on RoomOS
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:
Zahtjev()
, uključujući:require('xapi')
- potrebno je prepisati na standardni uvoz ECMAScript. Npr.,
const xapi = require('xapi')
promijenjeno zauvoz xAPI iz 'xapi'
require.main
modul,
uključujući:module.exports
- treba prepisati na standardni ECMAScriptizvoz
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.