Проблема с запуском Zigbee2mqtt

После обновления перестал стартовать zigbee2mqtt
в логе


/mnt/data/root/zigbee2mqtt# /usr/bin/npm start

> zigbee2mqtt@2.1.1 start
> node index.js

node:internal/modules/cjs/loader:1051
  throw err;
  ^

Error: Cannot find module 'semver'
Require stack:
- /mnt/data/root/zigbee2mqtt/index.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1048:15)
    at Module._load (node:internal/modules/cjs/loader:901:27)
    at Module.require (node:internal/modules/cjs/loader:1115:19)
    at require (node:internal/modules/helpers:130:18)
    at Object.<anonymous> (/mnt/data/root/zigbee2mqtt/index.js:1:16)
    at Module._compile (node:internal/modules/cjs/loader:1233:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1287:10)
    at Module.load (node:internal/modules/cjs/loader:1091:32)
    at Module._load (node:internal/modules/cjs/loader:938:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/mnt/data/root/zigbee2mqtt/index.js' ]
}

Node.js v20.5.1

Возможно проблема общая с Проблема с запуском Docker после обновления - #9 от пользователя covox

Здравствуйте.

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

Аналогичная ошибка. Диагностика, чтобы быстрее разобраться:

приложен диагностический архив, доступен только сотрудникам поддержки
(427,3 КБ)

приложен диагностический архив, доступен только сотрудникам поддержки
(482,4 КБ)

Высылаю

@Because а есть ли вариант откатиться? В списке версий пакета apt show -a старой нет. Или скажите, как запустить с новой версией, или расскажите, как поставить старую, а то ведь все zigbee устройства остаются недоступны.

С горем пополам откатился. Ещё и не скачать у вас пакеты по-нормальному. В каталогах индексов нет, указывал wget’у явный путь до .deb файла из stable — тоже 404 получал. В итоге, скачал .deb на stable контроллере через apt-get download, скопировал на testing контроллер и задаунгрейдил пакет.

Добрый день,

Прошу уточнить, правильно ли я понимаю, что на данный момент у вас всё работает корректно?

На версии из stable — да, всё работает.
А новую вы отозвали, поставить снова уже не даёт.
Кстати, я прописывал adapter: в конфиг перед обновлением (остановил z2m, прописал, запустил обновление). Но, похоже, дело не в конфиге, а в том, что пакет неправильно собран. Автор на подобную жалобу ещё в 2020 году писал, что, возможно, не выполнили npm ci

Добрый день,

Рад, что у вас всё заработало. Про npm ci передам ответственным.

@Timuridze, @iGold Добрый день.

Сейчас в тестинге доступна версия z2m 2.1.1.

Были проблемы при обновлении:

  1. Не устанавливался pnpm — новый менеджер пакетов не подтягивался при обновлении.
  2. Тип адаптера стал обязательным — в новой версии его нужно явно указывать.

Исправили:

  1. Автоматически устанавливается pnpm.
  2. Если в конфиге не указан адаптер, то прописывается по умолчанию тип zstack.

Если возникнут проблемы, постараемся помочь.

2 лайка

С версии 2.0 + это не актуально, т.к. используется уже пакетный менеджер pnmp, вместо npm.

@mikhail.burchu , спасибо за быстрый выпуск обновлённого пакета. Действительно, сейчас сервис запустился без ошибок. Разве что при установке было неочевидно, что на запрос об очистке модулей всё таки надо ответить «Y» (а то там дальше было написано true, и я решил, что скрипт сам за меня уже ответил).

Да, я тоже нашёл после такую запись у разработчика z2m:

  • If Zigbee2MQTT fails to start because of missing files after the update, run pnpm run clean, then start Zigbee2MQTT again.
1 лайк