Wijzigingen in de JavaScript-code in RoomOS-macro's
We hebben de machines waarop de macro's draaien op RoomOS bijgewerkt, en als gevolg van deze updates zullen sommige JavaScript-conventies en -functies niet langer beschikbaar zijn voor de macro's. Met name functies die verband houden met CommonJS zijn niet langer beschikbaar. Enkele veelvoorkomende voorbeelden van code die herschreven moet worden, zijn:
require(), waaronder:require('xapi')- moet worden herschreven naar het standaardimportECMAScript. Bijvoorbeeldconst xapi = require('xapi')gewijzigd naarimport xapi from 'xapi'require.main
module, waaronder:module.exports- moet worden herschreven naar het standaard ECMAScriptexportmodule.name- moet worden vervangen door_main_module_name()
Hoe wordt dit in- en uitgeschakeld?
Deze wijzigingen worden van kracht zodra xConfiguration Macros EvaluateTranspiledwordt omgeschakeld van Truenaar. False Deze instelling bestaat al een hele tijd en de wijziging wordt doorgevoerd door de standaardwaarde in nieuwe releases te wijzigen van Truenaar False.
Als macro's niet werken bij deze wijziging, is het expliciet instellen van de toggle back (xConfiguration Macros EvaluateTranspiled: True) een oplossing voor de korte termijn om ze weer te laten werken zoals voorheen. Houd er echter rekening mee dat dit slechts een tijdelijke oplossing is: deze schakelaar verdwijnt na een overgangsperiode.
Op dezelfde manier kan deze wijziging op oudere RoomOS-versies worden getest zonder te upgraden door de schakelaar in te stellen op. False
Opmerking: Als een macro op het apparaat wordt opgeslagen terwijl de schakelaar is ingeschakeld Falseen u later besluit om de schakelaar terug te zetten naar True, kan het nodig zijn die macro's opnieuw op te slaan in de macro-editor.
Wanneer worden deze wijzigingen van kracht?
De standaardwaarde van de EvaluateTranspiledschakelaar is gewijzigd om te Falsebeginnen met RoomOS in mei 2025 (11.28), wat betekent dat apparaten standaard overschakelen wanneer ze worden geüpgraded. In dezelfde versie is de transpilatiestap bij het opslaan van macro's via XAPI standaard uitgeschakeld. Als transpilatie via XAPI vereist is, moet de optie voor transpileren expliciet op true worden ingesteld.
Vanaf RoomOS juli 2025 (11.30) wordt een diagnose getoond wanneer de schakelaar is ingesteld op. True Het werkt nog steeds zoals voorheen.
In de toekomst wordt de schakelaar helemaal verwijderd en zal het apparaat zich gedragen alsof het was ingesteld op False. We streven ernaar deze wijziging door te voeren in RoomOS in november 2026 (27.0).
Klanten die, ondanks onze inspanningen om de wijzigingen op de hoogte te brengen en erover te informeren, zien dat hun macro's mislukken wanneer de wijzigingen permanent van kracht zijn in RoomOS, kunnen nog steeds de (tot) zes maanden uitgestelde software-update gebruiken die via Control Hub wordt geleverd voor apparaten die in de cloud zijn geregistreerd, om de wijziging uit te stellen.
Waarom is dit nodig? Technische gegevens
De belangrijkste reden voor deze wijziging is dat we onze JavaScript-engine hebben bijgewerkt om QuickJS te gebruiken, dat dient als een moderne, bijgewerkte JavaScript-runtime voor geïntegreerde systemen. Omdat dat niet langer nodig is met een moderne JavaScript-engine, verwijderen we nu de ondersteuning voor de transpilatie van JavaScript. Als u de extra stap, namelijk het transpileren van alle code, verwijdert, wordt de laadtijd bij het implementeren en uitvoeren van code verkort en wordt de complexiteit van het platform beperkt.
De schakelaar voor de JavaScript-engine wordt bestuurd door te xConfiguration Macros QuickJSEngine: Offveranderen naar On. Deze wijziging is geïmplementeerd in RoomOS in december 2023 (11.11), en we zijn van plan deze configuratieknop te verwijderen op hetzelfde tijdschema als. EvaluateTranspiled
We voeren deze wijzigingen door om ervoor te zorgen dat RoomOS maximaal presteert en dat we u kunnen helpen om de implementatie van JavaScript-extensies op een efficiënte en veilige manier op te schalen.
Lees meer over macro's op roomos.cisco.com.