Endringer i JavaScript-koden i RoomOS-makroer
Vi har oppdatert maskineriet som kjører makroene på RoomOS, og som et resultat av disse oppdateringene vil noen JavaScript-konvensjoner og funksjoner ikke lenger være tilgjengelige for makroene. Spesielt er CommonJS- relaterte funksjoner ikke lenger tilgjengelige. Noen vanlige eksempler på kode som trenger omskriving er:
require(), inkludert:require('xapi')- trenger omskriving til standard ECimportMAScript. F.eks.,const xapi = require('xapi')endret tilimport xapi from 'xapi'require.main
module, inkludert:module.exports- trenger omskriving til standard ECMAScriptexportmodule.name- bør byttes ut med_main_module_name()
Hvordan slås dette på og av?
Disse endringene trer i kraft når de xConfiguration Macros EvaluateTranspileder byttet fra Truetil False. Denne innstillingen har vært til stede i lang tid, og endringen rulles ut ved å endre standardverdien i nye utgivelser fra Truetil False.
Hvis makroer brytes ved denne endringen, er det en kortsiktig løsning å angi veksle tilbake (xConfiguration Macros EvaluateTranspiled: True) eksplisitt for å få dem til å fungere som før. Merk, derimot, at dette bare er en midlertidig løsning: Denne bryteren vil forsvinne etter en overgangsperiode.
På samme måte, på eldre RoomOS-versjoner kan denne endringen testes uten å oppgradere ved å sette bryteren til False.
Merk: Hvis en makro lagres på enheten mens bryteren er, Falseog du senere bestemmer deg for å snu bryteren tilbake til True, kan det være nødvendig å lagre disse makroene på nytt i makroredigeringsprogrammet.
Når vil disse endringene tre i kraft?
Standardverdien for bryteren EvaluateTranspiledble endret til å Falsestarte med RoomOS mai 2025 (11.28), noe som betyr at enheter vil bytte som standard når de oppgraderes. I samme versjon er transpilasjonstrinnet når du lagrer makroer gjennom XAPI slått av som standard. Hvis transpilering kreves gjennom XAPI, må transpilkommandoalternativet eksplisitt settes til true.
Fra og med RoomOS juli 2025 (11.30) vises en diagnose på når bryteren er satt til. True Det vil fortsatt fungere som før.
Fremover vil bryteren bli fjernet helt, og enheten vil oppføre seg som om den var satt til False. Vi tar sikte på å rulle ut denne endringen i RoomOS november 2026 (27.0).
Alle kunder som, til tross for vårt beste for å prøve å varsle og informere om endringene, ser at makroene deres mislykkes når endringene er permanent på plass i RoomOS, kan fortsatt bruke den (opptil) seks måneders forsinkede programvareoppdateringen som leveres gjennom Control Hub for skyregistrerte enheter for å forsinke endringen.
Hvorfor er dette nødvendig? Tekniske detaljer
Hoveddriveren for denne endringen er at vi har oppdatert JavaScript-motoren vår for å bruke QuickJS, som fungerer som en moderne, oppdatert JavaScript-kjøretid for innebygde systemer. Etter det, siden det ikke lenger er nødvendig med en moderne JavaScript-motor, fjerner vi nå støtten for transpilasjon av JavaScript. Fjerning av det ekstra trinnet med å transpile all kode reduserer lastetiden når du distribuerer og kjører kode, samt reduserer kompleksiteten i plattformen.
JavaScript-motorbryteren styres av xConfiguration Macros QuickJSEngine: Offendret til On. Denne endringen ble rullet ut i RoomOS desember 2023 (11.11), og vi planlegger å fjerne denne konfigurasjonsbryteren på samme tidslinje som. EvaluateTranspiled
Vi gjør disse endringene for å sikre at RoomOS yter maksimalt, og at vi kan hjelpe deg med å skalere distribusjonen av JavaScript-utvidelser på en effektiv og sikker måte.
Les mer om makroer på room os.cisco.com.