Ändringar av JavaScript-koden i RoomOS-makron
Vi har uppdaterat maskineriet som kör makron på RoomOS, och som ett resultat av dessa uppdateringar kommer vissa JavaScript-konventioner och funktioner inte längre att vara tillgängliga för makron. I synnerhet är CommonJS- relaterade funktioner inte längre tillgängliga. Några vanliga exempel på kod som behöver skrivas om är:
require(), inklusiverequire('xapi')- behöver skrivas om till standard ECimportMAScript. T.ex.const xapi = require('xapi')ändrat tillimport xapi from 'xapi'require.main
module, inklusivemodule.exports- behöver skrivas om till standard ECMAScriptexportmodule.name- bör ersättas med_main_module_name()
Hur slås det på och av?
Dessa ändringar träder i kraft när de väx xConfiguration Macros EvaluateTranspiledlas från Truetill False. Den här inställningen har funnits länge och ändringen rullas ut genom att ändra standardvärdet i nya versioner från Truetill False.
Om makron bryts vid den här ändringen är det en kortsiktig korrigering att uttryckligen ställa in växla tillbaka (xConfiguration Macros EvaluateTranspiled: True) för att få dem att fungera som tidigare. Notera, i alla fall, att detta bara är en tillfällig lösning: Denna väx ling försvinner efter en övergångsperiod.
På samma sätt, på äldre RoomOS-versioner kan denna ändring testas utan att uppgradera genom att ställa in växeln till False.
Obs!: Om ett makro sparas på enheten medan växeln är Falseoch du senare bestämmer dig för att vrida växeln tillbaka till True, kan det vara nödvändigt att spara dessa makron igen i makroredigeraren.
När kommer dessa förändringar att träda i kraft?
Standardvärdet för EvaluateTranspiledväxeln ändrades till att Falsebörja med RoomOS maj 2025 (11.28), vilket innebär att enheter växlar som standard när de uppgraderas. I samma version är transpilationssteget när du sparar makron via XAPI avstängt som standard. Om transpilering krävs via XAPI måste alternativet transpile kommando uttryckligen anges till true.
Från och med RoomOS juli 2025 (11.30) visas en diagnos när växeln är inställd på. True Det kommer fortfarande att fungera som tidigare.
Framöver kommer växeln att tas bort helt och enheten kommer att bete sig som om den var inställd på False. Vi strävar efter att rulla ut denna förändring i RoomOS november 2026 (27. 0).
Alla kunder som, trots våra bästa ansträngningar för att försöka meddela och informera om ändringarna, ser att deras makron misslyckas när ändringarna är permanent på plats i RoomOS kan fortfarande använda den (upp till) 6 månaders försenade programuppdatering som tillhandahålls via Control Hub för molnregistrerade enheter för att fördröja ändringen.
Varför är detta nödvändigt? Tekniska detaljer
Huvuddrivkraften för denna förändring är att vi har uppdaterat vår JavaScript-motor för att använda QuickJS, som fungerar som en modern, uppdaterad JavaScript-körtid för inbyggda system. Efter det, eftersom det inte längre behövs med en modern JavaScript-motor, tar vi nu bort stödet för transpilation av JavaScript. Att ta bort det extra steget att transpilla all kod minskar laddningstiden vid distribution och körning av kod samt minskar komplexiteten i plattformen.
JavaScript-motoromkopplaren styrs genom xConfiguration Macros QuickJSEngine: Offatt ändra till On. Denna ändring rullades ut i RoomOS december 2023 (11.11), och vi planerar att ta bort denna konfigurationsomkopplare på samma tidslinje som. EvaluateTranspiled
Vi gör dessa ändringar för att säkerställa att RoomOS presterar maximalt, och att vi kan hjälpa dig att skala distributionen av JavaScript-tillägg på ett effektivt och säkert sätt.
Läs mer om makron på room os.cisco.com.