Problem z nodem node-red-contrib-hikvision-ultimate

Dzień dobry Forumoiwicze!
Czy ktoś mógłby mi sprawdzić na nowszym Pi (3,4) czy ma tak samo?
Mam problem z nodem noode-red-contrib-hikvision-ultimate - wcześniej mi to działało fajnie - można było wysłać OSD na kamerę albo odebrać alarm z detekcji, ale już nie pamiętam na jakim Pi to sprawdzałem.
Teraz próbuję na Pi 1.2 i mam ERR: REQUIRE ESM.
Próbowałem starszej, nowszej wersji noda, nodered, nodejs - cały czas to samo.

A jaką masz wersję noda ?
Najnowsza node-red-contrib-hikvision-ultimate 1.0.61

Be sure to have installed Node.js v12.3.0 or newer

Screenshot - 01.06.2022 , 15_17_24

@mietekm

Tak, miałem v16.
Gdyby komuś chciało się sprawdzić: wystarczy zainstalować to, wziąć którykolwiek np. alarm i skonfigurować serwer - dowolny adres i hasło. I tak się do niczego nie będzie próbował połączyć tylko zatrzyma się z błędem.
edit:
Nie wyświetlił mi się ten obrazek - @artpc czyli u ciebie działa? Ja dzisiaj próbowałem na jeszcze jednym Raspberry Pi zero z dosyć starym systemem i Noderedem 1.3.4 ale też nie działa. Na nim nic nie będę więcej testować, bo tam (u klienta) działa zbyt dużo.
Teraz robię tak: Najnowszy Raspbian z RPi Imager, update, upgrade i instalacja nodered za pomocą skryptu ze strony z przełącznikiem --node16, instaluję hikvisjon… konfiguracja serwera. deploy i mam flows stopped due to missing node types

Jak brakuje jakiegoś noda to flow jest blokowany

Zgadza się, brakuje hikvision-config, bo on się uruchamia z błędem.
Jeśli wejdę w Manage Palette, to pod node-red-contrib-hikvision-ultimate mam:

Error [ERR_REQUIRE_ESM]: require() of ES Module /home/pi/.node-red/node_modules/node-fetch/src/index.js from /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js not supported. Instead change the require of index.js in /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js to a dynamic import() which is available in all CommonJS modules. (line:4)
Error [ERR_REQUIRE_ESM]: require() of ES Module /home/pi/.node-red/node_modules/node-fetch/src/index.js from /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js not supported. Instead change the require of index.js in /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js to a dynamic import() which is available in all CommonJS modules. (line:4)
Error [ERR_REQUIRE_ESM]: require() of ES Module /home/pi/.node-red/node_modules/node-fetch/src/index.js from /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js not supported. Instead change the require of index.js in /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js to a dynamic import() which is available in all CommonJS modules. (line:5)

To wygląda na problem z node-fetch albo (i) digest-fetch.
Próbowałem też podmieniać to node-fetch na starsze jak sugerują tu:

ale dalej to samo.
To bardzo dziwne, że problem jest u mnie na tak różnych instalacjach. Jedyne wytłumaczenie to to, że na starsze architektury (armv6) jest coś nie tak z którymiś pakietami i tak zostało.

Kilka przydatnych komend jeżeli masz dostęp do konsoli.

Aktualizuje moduły
sudo npm update modules

Instaluje wszystko co jest zawarte w pliku package.json w katalogu NR (plik może pochodzić z poprzedniej instalacji NR.

cd .node-red
npm install

npm audit sprawdza nody i wyświetla podatności na zagrożenia

npm audit fix --force wymusza automatyczną naprawę jeżeli to możliwe.

npm cache clean --force czyści pamieć cache po pozostałościach modułów

npx npm-check-updates -u aktualizacja npm

Moja instalacja HA na Debian

Możesz też spróbować ręcznej instalacji via npm z konsoli, kiedyś mi to pomogło
cd node-red
sudo npm install node-red-contrib-hikvision-ultimate@latest
Restart NR

Przerobiłem wszystkie te komendy i dalej to samo, a nawet gorzej, bo teraz nie widać tego konfiguracyjnego noda - w polu server nie ma przycisku do zrobienia nowej konfiguracji.
BTW: npm install: czyli żeby zarchiwizować sobie projekt albo przenieść na nową instalację trzeba zrobić export all flows i do tego zapisać sobie package.json?
Jak się zaimportuje to trzeba ręcznie doinstalować brakujące nody - dziwne, że ktoś nie wpadł na to żeby robiło się to automatycznie.
Edit:
Jestem w punkcie wyjścia.
Tak wygląda startujący node red:

Starting as a systemd service.
3 Jun 16:04:35 - [info]
Welcome to Node-RED
===================
3 Jun 16:04:35 - [info] Node-RED version: v2.2.2
3 Jun 16:04:35 - [info] Node.js  version: v16.14.2
3 Jun 16:04:35 - [info] Linux 5.10.17+ arm LE
3 Jun 16:04:47 - [info] Loading palette nodes
3 Jun 16:05:13 - [warn] ------------------------------------------------------
3 Jun 16:05:13 - [warn] [node-red-contrib-hikvision-ultimate/Hikvision-config] Error [ERR_REQUIRE_ESM]: require() of ES Module /home/pi/.node-red/node_modules/node-fetch/src/index.js from /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js not supported.
Instead change the require of index.js in /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js to a dynamic import() which is available in all CommonJS modules. (line:4)
3 Jun 16:05:13 - [warn] [node-red-contrib-hikvision-ultimate/Doorbell-config] Error [ERR_REQUIRE_ESM]: require() of ES Module /home/pi/.node-red/node_modules/node-fetch/src/index.js from /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js not supported.
Instead change the require of index.js in /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js to a dynamic import() which is available in all CommonJS modules. (line:4)
3 Jun 16:05:13 - [warn] [node-red-contrib-hikvision-ultimate/ANPR-config] Error [ERR_REQUIRE_ESM]: require() of ES Module /home/pi/.node-red/node_modules/node-fetch/src/index.js from /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js not supported.
Instead change the require of index.js in /home/pi/.node-red/node_modules/digest-fetch/digest-fetch-src.js to a dynamic import() which is available in all CommonJS modules. (line:5)
3 Jun 16:05:13 - [warn] ------------------------------------------------------
3 Jun 16:05:13 - [info] Settings file  : /home/pi/.node-red/settings.js
3 Jun 16:05:13 - [info] Context store  : 'default' [module=memory]
3 Jun 16:05:13 - [info] User directory : /home/pi/.node-red
3 Jun 16:05:13 - [warn] Projects disabled : editorTheme.projects.enabled=false
3 Jun 16:05:13 - [warn] Flows file name not set. Generating name using hostname.
3 Jun 16:05:13 - [info] Flows file     : /home/pi/.node-red/flows_raspberrypi.json
3 Jun 16:05:14 - [info] Server now running at http://127.0.0.1:1880/
3 Jun 16:05:14 - [warn]
---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.
If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.
You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------
3 Jun 16:05:14 - [info] Waiting for missing types to be registered:
3 Jun 16:05:14 - [info]  - Hikvision-config

Szkoda, bo akurat potrzebuję tego noda żeby wyświetlić wagę na OSD kamery. Generalnie mogę sobie to zrobić sam na piechotę w Pythonie czy nawet w Bashu, ale Node Red-a cenię za to, że można zmieniać i dorabiać coś na działającym systemie i nie trzeba się tłumaczyć nikomu że coś tam nie będzie przez jakiś czas działać albo że się będą teraz cuda działy bo restartujemy.

Przed robieniem jakichkolwiek operacji warto zrobić sobie kopie katalogu NR.
Komendy wyglądają miej więcej tak

cd .node-red
rm -rf node_modules
rm -f package-lock.json
npm install

Nie testowałem tego, ale jeżeli masz czysta instalacje to możesz potestować przywracanie modułów z package.json

jezęli masz problemy z załadowaniem NR można użyć safe_mode: true dopisując do konfiguracji NR w HA

@artpc dzięki, Linuxa nie musisz mnie uczyć :wink: Zrobiłem edit posta w międzyczasie.
Gdyby ktoś jeszcze potwierdził moją hipotezę, że problem jest na armv6 czyli Rpi <2

Czytam o kopii, a widzę komendy usuwające cały katalog node_modules i plik package-lock.json

Chodzi o przywracanie modułów ze starej instalacji NR na nową instalacje z pliku package.json

"name": "node-red-project",
    "description": "A Node-RED Project",
    "version": "0.0.1",
    "private": true,
    "dependencies": {
        "check-node-version": "^4.1.0",
        "node-red": "^2.2.2",
        "node-red-configurable-ping": "~1.0.1",
        "node-red-contrib-advance-logger": "~1.0.2",
        "node-red-contrib-advanced-ping": "~1.2.0",
        "node-red-contrib-afya-carousel-switch": "0.0.5",
        "node-red-contrib-afya-counter-the-new": "0.0.4",
        "node-red-contrib-afya-lullaby": "0.0.3",
        "node-red-contrib-aggregator": "~1.5.0",
        "node-red-contrib-alarm": "~1.2.5",
        "node-red-contrib-alexa-local": "~0.3.24",
        "node-red-contrib-alexa-notifyme": "~1.0.4",
        "node-red-contrib-alexa-remote2": "~3.10.4",
        "node-red-contrib-amazon-echo": "~0.1.10",
        "node-red-contrib-arp": "0.0.2",
        "node-red-contrib-astrodata": "~0.0.4",
        "node-red-contrib-automation-controller": "~1.1.4",
        "node-red-contrib-batcher": "~1.0.0",
        "node-red-contrib-bigtimer": "~2.8.1",
        "node-red-contrib-blindcontroller-v2": "~1.0.8",
        "node-red-contrib-bool-gate": "~1.0.2",
        "node-red-contrib-boolean-logic-ultimate": "~1.0.52",
................

Edit:

I to wszystko nic dalej się nie dzieje, Nodered startuje?

Startuje. Jest komunikat:

Flows stopped due to missing node types.
Hikvision-config

i oczywiście ten nod nie działa, ale reszta jak najbardziej.
Komunikat powtarza się za każdym Deploy aż nie usunę noda Hikvision-config.

Zatrzymaj NR
sudo npm uninstall node-red-contrib-hikvision-ultimate@latest
sudo npm install node-red-contrib-hikvision-ultimate@latest
Uruchom NR

@mietekm
Jeżeli to nie działa to stawiam na wersje NR nie system.
Moja wersja NR

 Add-on version: 10.0.1
 There is an update available for this add-on!
 Latest add-on version: 11.1.2
 Please consider upgrading as soon as possible.
 System: Debian GNU/Linux 11 (bullseye)  (amd64 / qemux86-64)
 Home Assistant Core: 2022.6.0
 Home Assistant Supervisor: 2022.05.3

Screenshot - 03.06.2022 , 18_39_34
@mietekm

Próbowałem już nawet z cache clean pomiędzy, ale proszę bardzo - zrobiłem jeszcze raz i jest dokładnie to samo i na dokładkę nie ma tej ikonki dodania configu w polu server.
Ja myślę, że szkoda Twojego czasu - żeby cokolwiek rozwiązać musisz mieć ten sam objaw u siebie, a prawdopodobnie on występuje tylko na arm v6 czyli Pi Zero i wszystkie < v2.

Czyli PC względem RPi jest przepaść w wersjach - jeśli tak, to tym bardziej nie ma analogii.
Kolejny odcinek:
Dziś zainstalowałem na Debianie. Jest dokładnie tak samo:

4 Jun 15:29:49 - [info] Node-RED version: v2.2.2
4 Jun 15:29:49 - [info] Node.js  version: v16.15.1
4 Jun 15:29:49 - [info] Linux 5.10.0-9-amd64 x64 LE

Dalej jest identycznie.
@artpc nie mam pojęcia dlaczego niby u ciebie działa. Może masz jakieś customowe wersje poskładane dla HA?
Ja nie używam HA, nie żebym miał coś przeciw - po prostu nie jest mi potrzebny.

Parę ekranów może ci w czymś pomogą.
Screenshot - 04.06.2022 , 21_32_51




Screenshot - 04.06.2022 , 21_47_00

Mój Katalog node-red-contrib-hikvision-ultimate jeżeli to w czymś pomoże
https://drive.google.com/file/d/1DmPnaFyM0NRjlV5iJG4ll0ly0La34T0v/view?usp=sharing

@mietekm
digest-fetxh
https://drive.google.com/file/d/1_e3O2HTWeIUpCem4fcldHALT7lz6egqa/view?usp=sharing

Wszystko jest identyczne jak u mnie, z tym że ten katalog node_modules z node-fetch wrzuciłeś dodatkowo?
Node-fetch u mnie też jest identyczny, Mógłbyś jeszcze dla kompletu wrzucić ten digest-fetxh?

Pojawił się update, który rozwiązuje problem.

Version 1.0.62 Juni 2022
- Maintenance release. Fixed an issue with node-fetch v3 incompatibility.

Po prostu miałem pecha, że akurat był mi potrzebny jak zrobił się problem.
@artpc nie mam pojęcia w takim razie dlaczego u ciebie działało - digest-fetch też wygląda identycznie. To jjuż w tym momencie trafia do archiwum-x.

Idąc twoim tropem pewnie dlatego:

"name": "node-fetch",
  "version": "1.7.3",