Node-RED 5.0.4: почему не стоит ставить 5.0.2 или 5.0.3 и что проверить перед обновлением
Новости автоматизации и умного дома

Node-RED 5.0.4: почему не стоит ставить 5.0.2 или 5.0.3 и что проверить перед обновлением

Node-RED 5.0.4 вышел 30 июля 2026 года после двух быстрых исправлений в тот же день. Версии 5.0.2 и 5.0.3 затронула регрессия JSONata, из-за которой результат выражения мог вести себя не как обычный JavaScript-объект. Одновременно вся ветка Node-RED 5 требует Node.js 22.9 или новее, а рекомендуемой средой является Node.js 24.

Коротко: при обновлении ветки 5.0 устанавливайте Node-RED 5.0.4 или более новую исправительную версию, а не 5.0.2 и не 5.0.3. Перед миграцией сохраните каталог .node-red, экспортируйте потоки, проверьте файл credentials, версию Node.js, сторонние nodes, JSONata-выражения, MQTT, Modbus и возможность отката.
Хронология

Почему за один день вышли Node-RED 5.0.2, 5.0.3 и 5.0.4

Утром 30 июля вышла версия 5.0.2. В ней обновили библиотеку JSONata и добавили очистку сообщений сессионных ошибок перед отображением в редакторе.

После обнаружения изменения поведения JSONata разработчики выпустили 5.0.3 и попытались вернуть предыдущую версию библиотеки. Затем выяснилось, что откат выполнен недостаточно далеко. Через несколько минут вышла 5.0.4 с дополнительным откатом JSONata.

5.0.2Обновление JSONata и очистка сообщений сессии
5.0.3Первый откат JSONata из-за регрессии
5.0.4Более глубокий откат после повторной проверки
Практический вывод: если система уже обновлена до 5.0.2 или 5.0.3, не нужно разбирать все потоки наугад. Сначала обновитесь до 5.0.4 или более новой исправительной версии, затем перезапустите Node-RED и выполните тесты.
JSONata

Что именно могло измениться в работе потоков

JSONata используется в Change, Switch и других узлах для преобразования сообщений, фильтрации данных и вычислений. Регрессия затрагивала создаваемые JSONata объекты: они могли возвращаться с нулевым прототипом вместо обычного прототипа JavaScript Object.

[Object: null prototype] { a: 1, b: 2 }

Такой объект выглядит почти как обычный, но у него может отсутствовать метод hasOwnProperty(). Если следующий Function node, пользовательский node или библиотека вызывает этот метод напрямую, поток способен завершиться ошибкой:

TypeError: result.hasOwnProperty is not a function

Какие потоки проверить в первую очередь

  • Change nodes с выражениями JSONata, которые формируют новый объект;
  • Function nodes, расположенные сразу после JSONata-преобразования;
  • потоки, где проверяется obj.hasOwnProperty(...);
  • сторонние nodes, получающие объект из Change или Switch;
  • формирование JSON для HTTP API, MQTT и баз данных;
  • шаблоны, где результат JSONata передаётся в пользовательский JavaScript;
  • обработку Modbus-регистров и телеметрии, собираемой в объект.
Важно: проблема не означает, что каждое JSONata-выражение в 5.0.2 или 5.0.3 обязательно давало неправильный результат. Риск возникал там, где последующий код ожидал обычный объект с методами прототипа.

Как сделать Function node устойчивее

Вместо прямого вызова метода объекта безопаснее использовать вызов через прототип:

Object.prototype.hasOwnProperty.call(obj, "property")

Это полезная общая практика, но она не отменяет обновление Node-RED. Исправлять все функции только ради временной регрессии не требуется, если логика была корректной до обновления.

Обязательное требование

Node-RED 5 не запускается на Node.js 20

Node-RED 5.0 требует Node.js 22.9.0 или новее. Проект рекомендует Node.js 24, и официальные Docker-образы ветки 5 основаны именно на Node.js 24.

Node.js 20Не поддерживается Node-RED 5
Node.js 22.9+Минимально допустимая версия
Node.js 24Рекомендуемая LTS-ветка

Проверить среду можно командами:

node --version
node-red --version
npm --version
Распространённая ошибка: пользователь обновляет Node.js в интерактивном терминале, но systemd продолжает запускать Node-RED со старым бинарным файлом Node.js из другого пути. Проверяйте не только команду node -v, но и службу, переменную PATH и журнал запуска.

Что изменилось для старых Raspberry Pi

Официальные образы Node.js 24 больше не выпускаются для 32-битной архитектуры ARMv7. Поэтому старые установки на 32-битной системе могут не перейти на Node-RED 5 без обновления операционной системы или замены оборудования.

Кого затронет миграция

Разные установки обновляются по-разному

УстановкаКто управляет Node.jsОсновной риск
Home Assistant Node-RED Add-onОбраз дополненияСовместимость дополнения, палитры и сохранённого каталога данных.
Официальный Docker-образDocker-образПлавающий тег, неверный том /data и сторонние nodes.
Raspberry Pi / Debian scriptОперационная система и установочный скриптСтарая Node.js, systemd использует другой путь, 32-битная ОС.
npm globalПользователь или администратор сервераРазные версии npm, Node.js и глобальных пакетов.
Wiren BoardDebian и выбранный способ установкиКонфликт с пакетами контроллера и критичными сценариями объекта.
Proxmox LXCОС внутри контейнераСтарый дистрибутив, снимок LXC и доступ к MQTT или Modbus.
WindowsУстановленная в Windows Node.jsСлужба использует старую Node.js или другой каталог пользователя.
Не применяйте одну инструкцию ко всем платформам. Команды для Home Assistant Add-on, Docker, Debian, Wiren Board, Windows и LXC различаются.
До обновления

Что сохранить, чтобы восстановить Node-RED

  1. Весь пользовательский каталог. Обычно это ~/.node-red или каталог /data внутри контейнера и дополнения.
  2. Файл потоков. Например, flows.json или файл с именем хоста.
  3. Файл credentials. Храните его вместе с соответствующим файлом потоков и значением credentialSecret.
  4. settings.js. В нём могут находиться авторизация, HTTPS, ключ шифрования, пути и пользовательские функции.
  5. package.json и package-lock.json. Они фиксируют установленные сторонние nodes и зависимости.
  6. Экспорт важных flows. Дополнительная JSON-копия удобна для быстрого просмотра и частичного восстановления.
  7. Версии. Node-RED, Node.js, npm, Docker-образ, дополнение и сторонние nodes.
  8. Переменные окружения. MQTT, базы данных, API, TLS и пути к сертификатам.
  9. Проекты и Git. Проверьте незакоммиченные изменения, ветку и доступ к удалённому репозиторию.
  10. Способ отката. Предыдущий Docker-тег, snapshot LXC, backup Home Assistant или резервная копия сервера.
Не публикуйте экспорт потоков без проверки. В нём могут оказаться токены, адреса оборудования, MQTT-топики, логины, URL камер и другие чувствительные данные. Файл credentials тоже нельзя передавать посторонним.
Порядок действий

Как обновлять Node-RED на разных платформах

Home Assistant Add-on

Создайте полную резервную копию Home Assistant и отдельный экспорт критичных потоков. Обновляйте дополнение через его страницу. Node.js находится внутри образа дополнения, поэтому устанавливать Node.js в Home Assistant OS вручную не нужно.

Docker и Docker Compose

Убедитесь, что каталог /data подключён к постоянному тому. Зафиксируйте предыдущий тег образа, скачайте новый образ 5.0.4 или более новый и пересоздайте контейнер. Не используйте latest, если нужен понятный откат.

Raspberry Pi и Debian

Проверьте Node.js и архитектуру ОС. Официальный скрипт установки поддерживает выбор актуальной Node.js, но перед запуском нужно изучить его параметры и сохранить каталог .node-red. После обновления проверьте, какой бинарный файл Node.js использует systemd.

Wiren Board

Node-RED не должен становиться единственной точкой отказа критичных сценариев. Перед обновлением остановите экспериментальные потоки, сохраните данные и проверьте совместимость выбранного способа установки с Debian и штатными пакетами контроллера. Критичную защиту котла, насоса и электрики нельзя переносить только в Node-RED.

Proxmox LXC или виртуальная машина

Создайте snapshot, затем обновите Node.js и Node-RED внутри гостевой системы. Отдельно проверьте сеть, DNS, MQTT, Modbus TCP и последовательные порты.

После запуска

Какие потоки нужно протестировать вручную

MQTTПодписки, публикации, retain, QoS и повторное подключение.
ModbusОпрос регистров, таймауты, очередь команд и запись значений.
HTTPREST API, TLS, SNI, авторизация и обработка ошибок.
JSONataChange, Switch и Function nodes после сформированных объектов.
Home AssistantСобытия, состояния, services и WebSocket-соединение.
Базы данныхЗапись истории, SQL-запросы и повторное подключение.
УведомленияMAX, Telegram, email и корректность текста сообщения.
РасписанияЧасовой пояс, cron и запуск после перезагрузки.
Контекстflow, global и persistent context сохранились.
DashboardСторонний интерфейс открывается и получает данные.
ОшибкиCatch и Status nodes получают ожидаемые сообщения.
Ручное управлениеКритичное оборудование можно отключить без Node-RED.

Проверяйте не только Deploy

Успешный запуск редактора и отсутствие красных узлов не доказывают правильную работу автоматики. Нужно физически проверить свет, реле, котёл, клапан, вентиляцию, ворота или другое оборудование в безопасном режиме.

Не тестируйте опасную нагрузку без подготовки. Управление силовыми цепями, котлами, насосами, воротами и щитовыми устройствами должно сохранять штатные блокировки и ручной режим. Электромонтаж и вмешательство в щит выполняет специалист.
Ветка 5.0

Что полезного появилось в Node-RED 5

Новый интерфейс редактора

Переработаны боковые панели, навигация и использование рабочего пространства.

Встроенная тёмная тема

Редактор может следовать настройке браузера или использовать выбранный режим.

Разделение панелей

Можно одновременно видеть Debug и другую панель, что упрощает диагностику.

Пауза Debug

Вывод можно временно остановить, чтобы сообщения не прокручивали панель.

node.linkcall

Function node может вызвать Link node и дождаться ответа от переиспользуемого потока.

Burst mode в Delay

Сообщения пропускаются пакетом до достижения лимита, затем блокируются до нового интервала.

Расширенный TLS

Поддерживаются PFX/P12, сертификаты из переменных окружения и настройка SNI.

Усиленная авторизация

Обновлена работа OAuth и удалены прежние CORS-настройки администратора по умолчанию.

Эти функции делают переход полезным, но не требуют обновлять производственную систему без тестов. Надёжность потоков и совместимость nodes важнее нового оформления редактора.

Восстановление

Как откатиться, если Node-RED 5 не запускается

  1. Остановите Node-RED. Не выполняйте повторные Deploy и автоматическую установку nodes.
  2. Сохраните журнал ошибки. Он поможет отличить Node.js, JSONata, npm и несовместимый node.
  3. Верните предыдущую среду. Docker-тег, snapshot, backup дополнения или версию пакета.
  4. Восстановите пользовательский каталог. Потоки, credentials, settings и package files должны соответствовать сохранённому состоянию.
  5. Проверьте credentialSecret. Без него сохранённые credentials могут не расшифроваться.
  6. Установите зависимости. Используйте package-lock и совместимые версии nodes.
  7. Запустите без Deploy. Сначала изучите журнал и состояние узлов.
  8. Проверьте критичные сценарии. Только после этого возвращайте автоматический режим.
Для пользователей ветки 4.x: Node-RED 4 находится в режиме сопровождения до 31 декабря 2026 года. Если переход на 5.x пока невозможен, нужно использовать актуальную исправительную версию 4.1.x, а не оставаться на старом выпуске.
Типичные ошибки

Что не стоит делать

  • обновлять до 5.0.2 или 5.0.3 вместо 5.0.4 и более новой версии;
  • обновлять Node-RED 5 на Node.js 20;
  • сохранять только экспорт flows без credentials и settings.js;
  • использовать плавающий Docker-тег без записи предыдущей версии;
  • обновлять все palette nodes одной кнопкой одновременно с Node-RED;
  • удалять неизвестные узлы до сохранения списка пакетов;
  • обновлять основной контроллер удалённо без человека на объекте;
  • переносить критичные защиты только в визуальный поток;
  • открывать редактор Node-RED напрямую в интернет;
  • публиковать flows и credentials в открытом доступе.
Связанные материалы

Что полезно изучить перед обновлением

Вывод

Стоит ли обновляться до Node-RED 5.0.4

Да, если система готова к Node.js 22.9 или новее и проверена совместимость сторонних nodes. Версия 5.0.4 предпочтительнее 5.0.2 и 5.0.3, поскольку содержит более полный откат проблемного изменения JSONata.

Для работающего дома, котельной или коммерческого объекта обновление нужно проводить с резервной копией, тестовым окном и ручным управлением. Особенно внимательно проверяются JSONata, Function nodes, MQTT, Modbus и сценарии, управляющие реальным оборудованием.

Безопасный порядок: backup, проверка Node.js, обновление Node-RED, запуск без массового обновления палитры, тест потоков, затем обновление сторонних nodes по одному.

Тула и удалённый разбор

Node-RED перестал запускаться или выполнять потоки?

Поможем проверить Node.js, Docker или systemd, каталог данных, credentials, сторонние nodes, JSONata, MQTT, Modbus и журнал ошибок. Сначала сохраняем данные и определяем причину, а не пересоздаём потоки наугад.

Выезд и диагностика по Туле от 5000 ₽. Удалённый технический разбор выполняется по согласованной задаче. Стоимость зависит от платформы, числа потоков и состояния резервных копий.

FAQ

Частые вопросы о Node-RED 5.0.4

Когда вышел Node-RED 5.0.4?

Версия опубликована 30 июля 2026 года.

Почему не стоит использовать Node-RED 5.0.2?

В 5.0.2 обновили JSONata, после чего обнаружилось изменение поведения создаваемых объектов. Разработчики выпустили быстрый откат.

Почему версия 5.0.3 тоже нежелательна?

Первый откат JSONata оказался недостаточно глубоким. Версия 5.0.4 вернула библиотеку дальше.

Какая Node.js нужна для Node-RED 5?

Минимум Node.js 22.9.0. Проект рекомендует Node.js 24.

Нужно ли обновлять Node.js в Home Assistant OS?

Нет. Для Node-RED Add-on среда Node.js находится внутри образа дополнения.

Что сохранить перед обновлением?

Пользовательский каталог, flows, credentials, settings.js, package.json, package-lock.json, переменные окружения и предыдущую версию среды.

Могут ли пропасть пароли после восстановления?

Да, если восстановить файл credentials без соответствующего credentialSecret или без связанного файла потоков.

Нужно ли обновлять все сторонние nodes?

Нет. Сначала обновляют Node-RED и проверяют систему. Сторонние nodes безопаснее обновлять по одному с тестированием зависимых потоков.

Поддерживается ли Node-RED 4?

Ветка 4 находится в режиме сопровождения и должна завершить поддержку 31 декабря 2026 года.

Можно ли использовать Node-RED для защиты котла или электрощита?

Node-RED может участвовать в мониторинге и сценариях, но не должен заменять штатные защиты, автоматику безопасности и ручное управление оборудования.