Změny kódu JavaScript v makrech RoomOS

Aktualizovali jsme strojní zařízení běžící makra v RoomOS a v důsledku těchto aktualizací již některé konvence a funkce JavaScriptu nebudou pro makra k dispozici. Zejména funkce související s CommonJS již nejsou k dispozici. Některé běžné příklady kódu, který je třeba přepsat, jsou:

  1. require(), včetně:
    • require('xapi') - vyžaduje přepsání na standardní import ECMAScript . Např. const xapi = require('xapi') změněno na import xapi z 'xapi'
    • require.main
  2. modul, včetně:
    • module.exports - vyžaduje přepsání na standardní export ECMAScript
    • module.name - by měl být nahrazen textem _main_module_name()

Jak se to zapíná a vypíná?

Tyto změny se projeví, jakmile je položka xConfiguration Macros EvaluateTranspiled přepnuta z True na False. Toto nastavení existuje již dlouhou dobu a změna je zavedena změnou výchozí hodnoty v nových verzích z True na False.

Pokud se makra při této změně poruší, explicitní nastavení přepínače zpět (xConfiguration Macros EvaluateTranspiled: True) je krátkodobou opravou, aby fungovala jako dříve. Všimněte si však, že se jedná pouze o dočasné řešení: Tento přepínač zmizí po přechodném období.

Podobně u starších verzí RoomOS lze tuto změnu otestovat bez upgradu nastavením přepínače na hodnotu False.

Poznámka: Pokud je makro uloženo v zařízení v době , kdy je přepínač nastaven na hodnotu Nepravda , a později se rozhodnete TURN přepnout zpět na hodnotu True, může být nutné tato makra znovu uložit v editoru maker.

Kdy tyto změny vstoupí v platnost?

Výchozí hodnota přepínače EvaluateTranspiled byla změněna na False počínaje RoomOS May 2025 (11.28), což znamená, že zařízení se při upgradu ve výchozím nastavení přepnou. Ve stejné verzi je ve výchozím nastavení vypnut krok přepisu při ukládání maker pomocí XAPI. Pokud je vyžadována transpilace prostřednictvím XAPI, musí být možnost příkazu transpile explicitně nastavena na hodnotu true.

Počínaje RoomOS červenec 2025 (11.30) se zobrazí diagnostika, když je přepínač nastaven na True. Bude to stále fungovat jako předtím.

V budoucnu bude přepínač zcela odstraněn a zařízení se bude chovat, jako by bylo nastaveno na False. Tuto změnu chceme zavést v listopadu 2025. Toto datum se může změnit, když zjistíme, kolik našich zákazníků je schopno aktualizovat svá makra, ale časová osa se měří v měsících, nikoli v letech. Přesná data budou zveřejněna zde a v poznámkách k vydání příslušných verzí RoomOS.

Všichni zákazníci, kteří navzdory našemu nejlepšímu úsilí ve snaze upozornit a informovat o změnách vidí, že jejich makra selžou, když jsou změny trvale zavedeny v RoomOS, mohou stále používat (až) 6měsíční zpožděnou aktualizaci softwaru, která je poskytována prostřednictvím Centra řízení pro zařízení registrovaná v cloudu, ke zpoždění změny.

Proč je to nutné? Technické údaje

Hlavní hnací silou této změny je, že jsme aktualizovali náš modul JavaScriptu tak, aby používal QuickJS, který slouží jako moderní, aktualizovaný modul runtime JavaScriptu pro vestavěné systémy. Poté, protože již není potřeba s moderním JavaScriptovým enginem, nyní odstraňujeme podporu pro transpilaci JavaScriptu. Odebrání dalšího kroku překladu veškerého kódu snižuje dobu načítání při nasazování a spouštění kódu a také snižuje složitost platformy.

Přepínač modulu JavaScript je řízen makry xConfiguration QuickJSEngine: Vypnuto změněno na Zapnuto. Tato změna byla zavedena v RoomOS December 2023 (11.11) a plánujeme odebrat tento přepínač konfigurace na stejné časové ose jako EvaluateTranspiled.

Tyto změny provádíme, abychom zajistili, že systém RoomOS bude fungovat na maximum a že vám pomůžeme škálovat nasazení rozšíření JavaScriptu efektivním a bezpečným způsobem.

Další informace o makrech najdete na roomos.cisco.com.