Transpile-Einstellung unter RoomOS
Änderungen am JavaScript-Code in RoomOS-Makros
Wir haben die Maschinerie aktualisiert, auf der die Makros unter RoomOS ausgeführt werden, und als Ergebnis dieser Updates werden einige JavaScript-Konventionen und -Funktionen für die Makros nicht mehr verfügbar sein. Insbesondere sind CommonJS-bezogene Funktionen nicht mehr verfügbar. Einige gängige Beispiele für Code, der neu geschrieben werden muss, sind:
require(),
einschließlich:require('xapi')
– muss in den standardmäßigen ECMAScript-Importumgeschrieben werden
. Z.B.const xapi = require('xapi')
geändert, um xapi von 'xapi' zuimportieren
require.main
Modul
, einschließlich:module.Exports
- muss in den Standard-ECMAScript-Exportumgeschrieben werden
module.name
- sollte ersetzt werden durch_main_module_name()
Wie wird dies aktiviert und deaktiviert?
Diese Änderungen werden wirksam, sobald xConfiguration Macros EvaluateTranspiled
von True
auf False umgeschaltet wird
. Diese Einstellung ist schon lange vorhanden und die Änderung wird durch die Änderung des Standardwerts in neuen Releases von True
auf False ausgerollt
.
Wenn Makros bei dieser Änderung nicht mehr funktionieren, ist das explizite Zurücksetzen des Umschalters (xConfiguration Macros EvaluateTranspiled: True
) eine kurzfristige Lösung, damit sie wie zuvor funktionieren. Beachten Sie jedoch, dass dies nur eine vorübergehende Lösung ist: Dieser Schalter wird nach einer Übergangszeit aufgehoben .
In ähnlicher Weise kann diese Änderung bei älteren RoomOS-Versionen ohne Upgrade getestet werden, indem der Schalter auf False
gesetzt wird.
Hinweis: Wenn ein Makro auf dem Gerät gespeichert wird, während der Schalter False ist
, und Sie sich später entscheiden, den Schalter wieder auf True zu TURN, ist es möglicherweise erforderlich, diese Makros im Makro-Editor erneut zu
speichern.
Wann treten diese Änderungen in Kraft?
Der Standardwert des Umschalters "EvaluateTranspiled
" wurde ab RoomOS May 2025 (11.28) in
"False " geändert, was bedeutet, dass Geräte beim Upgrade standardmäßig wechseln. In der gleichen Version ist der Transpilationsschritt beim Speichern von Makros über XAPI standardmäßig ausgeschaltet. Wenn eine Transpilation über XAPI erforderlich ist, muss die Befehlsoption transpile explizit auf true festgelegt werden.
Ab RoomOS Juli 2025 (11.30) wird eine Diagnose angezeigt, wenn der Schalter auf True
gesetzt ist. Es funktioniert weiterhin wie zuvor.
In Zukunft wird der Schalter vollständig entfernt und das Gerät verhält sich so, als wäre es auf False
gesetzt. Diese Änderung soll im November 2025 eingeführt werden. Dieses Datum kann sich ändern, wenn wir sehen, wie viele unserer Kunden in der Lage sind, ihre Makros zu aktualisieren, aber der Zeitplan wird in Monaten und nicht in Jahren gemessen. Die genauen Termine werden hier und in den Release Notes der jeweiligen RoomOS-Releases veröffentlicht.
Alle Kunden, die trotz unserer Bemühungen, über die Änderungen zu benachrichtigen und zu informieren, feststellen, dass ihre Makros fehlschlagen, wenn die Änderungen dauerhaft in RoomOS vorhanden sind, können weiterhin das (bis zu) 6 Monate verzögerte Software-Update verwenden, das über Control Hub für Cloud-registrierte Geräte bereitgestellt wird, um die Änderung zu verzögern.
Warum ist das notwendig? Technische Details
Der Hauptgrund für diese Änderung ist, dass wir unsere JavaScript-Engine aktualisiert haben, um QuickJS zu verwenden, das als moderne, aktualisierte JavaScript-Laufzeitumgebung für eingebettete Systeme dient. Danach, da es mit einer modernen JavaScript-Engine nicht mehr benötigt wird, entfernen wir jetzt die Unterstützung für die Transpilation von JavaScript. Der Wegfall des zusätzlichen Schritts des Transpilierens des gesamten Codes reduziert die Ladezeit beim Bereitstellen und Ausführen von Code und reduziert die Komplexität der Plattform.
Der JavaScript-Engine-Schalter wird durch xConfiguration-Makros QuickJSEngine gesteuert: Aus
wurde auf Ein
geändert. Diese Änderung wurde im RoomOS-Dezember 2023 (11.11) eingeführt, und wir planen, diesen Konfigurationsschalter auf derselben Zeitachse wie EvaluateTranspiled
zu entfernen.
Wir nehmen diese Änderungen vor, um sicherzustellen, dass RoomOS die maximale Leistung erbringt und dass wir Ihnen helfen können, die Bereitstellung von JavaScript-Erweiterungen effizient und sicher zu skalieren.
Weitere Informationen zu Makros finden Sie auf roomos.cisco.com.