Промени в JavaScript кода в макросите на RoomOS

Актуализирахме машините, изпълняващи макросите в RoomOS, и в резултат на тези актуализации някои JavaScript конвенции и функции вече няма да бъдат достъпни за макросите. По-специално, функциите, свързани с CommonJS , вече не са налични. Някои често срещани примери за код, който се нуждае от пренаписване, са:

  1. require(), включително:
    • require('xapi') - трябва да се пренапише в стандартния импорт на ECMAScript . Например,const xapi = require('xapi') променено на импортиране на xapi от 'xapi'
    • require.main
  2. модул, включително:
    • module.exports - нуждае се от пренаписване до стандартния експорт на ECMAScript
    • module.name - трябва да се замени с _main_module_name()

Как се включва и изключва това?

Тези промени влизат в сила, след като xConfiguration Macros EvaluateTranspiled се превключи от True на False. Тази настройка присъства от дълго време и промяната се въвежда чрез промяна на стойността по подразбиране в новите версии от True на False.

Ако макросите се счупят при тази промяна, изричната настройка на превключвателя назад (xConfiguration Macros EvaluateTranspiled: True) е краткосрочна корекция, за да ги накара да работят както преди. Имайте предвид обаче, че това е само временно решение: Този превключвател ще изчезне след преходен период.

По същия начин, в по-старите версии на RoomOS тази промяна може да бъде тествана без надграждане, като зададете превключвателя на False.

Забележка: Ако макрос е записан на устройството , докато превключвателят е False и по-късно решите да TURN превключвателя обратно на True, може да се наложи повторно записване на тези макроси в редактора на макроси.

Кога ще влязат в сила тези промени?

Стойността по подразбиране на превключвателя EvaluateTranspiled е променена на False , започвайки с RoomOS May 2025 (11.28), което означава, че устройствата ще се превключват по подразбиране при надграждане. В същата версия стъпката на транспилация при запазване на макроси чрез XAPI е изключена по подразбиране. Ако се изисква транспилация чрез XAPI, опцията за транспилиране трябва да бъде изрично зададена на true.

Започвайки с RoomOS юли 2025 (11.30) ще се покаже диагностика, когато превключвателят е настроен на True. Ще продължи да работи както преди.

Занапред превключвателят ще бъде премахнат напълно и устройството ще се държи така, сякаш е настроено на False. Целта ни е да въведем тази промяна през юни 2026 г. Тази дата може да се промени, когато видим колко от нашите клиенти могат да актуализират макросите си, но времевата линия се измерва в месеци, а не в години. Точните дати ще бъдат публикувани тук и в бележките към изданието на съответните издания на RoomOS.

Всички клиенти, които въпреки усилията ни да уведомим и информираме за промените, виждат, че макросите им се провалят, когато промените са постоянно в сила в RoomOS, могат да използват (до) 6-месечната забавена актуализация на софтуера, която се предоставя чрез Control Hub за регистрирани в облака устройства, за да забавят промяната.

Защо е необходимо това? Технически подробности

Основният двигател за тази промяна е, че актуализирахме нашия JavaScript двигател, за да използваме QuickJS, който служи като модерна, актуализирана JavaScript среда за изпълнение за вградени системи. След това, тъй като вече не е необходим с модерен JavaScript двигател, сега премахваме поддръжката за транспилация на JavaScript. Премахването на допълнителната стъпка на транспилиране на целия код намалява времето за зареждане при внедряване и изпълнение на код, както и намалява сложността на платформата.

Превключвателят на двигателя JavaScript се управлява от макроси на xConfiguration QuickJSEngine: Изключено е променено на Вкл. Тази промяна беше въведена в RoomOS декември 2023 (11.11) и планираме да премахнем този превключвател за конфигурация в същата времева линия като EvaluateTranspiled.

Правим тези промени, за да гарантираме, че RoomOS работи максимално и че можем да ви помогнем да мащабирате внедряването на разширения на JavaScript по ефективен и сигурен начин.

Прочетете повече за макросите на roomos.cisco.com.