Dépendances : JS heap out of memory - Raspberry Pi 3

Bonjour à tous,

Je suis passé sur le plugin Zwave-js en lieu et place d’openzwave hier.

L’ors de l’installation des dépendances j’ai eu une erreur dans les logs que je n’ai pas réussi à résoudre malgré plusieurs tentatives et quelques modifications au niveau du swap…

L’erreur est systématiquement ici à chaque essai:

- building for production...
node:events:491
throw er; // Unhandled 'error' event
^
Error: Worker terminated due to reaching memory limit: JS heap out of memory
at new NodeError (node:internal/errors:387:5)
at Worker.[kOnExit] (node:internal/worker:277:26)
at Worker..onexit (node:internal/worker:199:20)
Emitted 'error' event on Worker instance at:
at Worker.[kOnExit] (node:internal/worker:277:12)
at Worker..onexit (node:internal/worker:199:20) {
code: 'ERR_WORKER_OUT_OF_MEMORY'
}
ERROR: "build:ui" exited with 1.

Voici un screen de la santé de ma prod:

Je suis sur un RPI 3 avec SSD.

Je viens de passer la dernière mise à jour à l’instant j’hésite à relancer les dépendances car même avec cette erreur le réseau fonctionne… Bizarrement j’ai du relancer la création de toutes les commandes des modules après update, mais cela marche.

J’ai également un pb lors de l’accès à l’UI Zwave via le bouton apparu sur cette dernière MAJ:

Error: ENOENT: no such file or directory, scandir '/var/www/html/plugins/zwavejs/resources/zwave-js-ui/dist/static/css'
    at Object.readdirSync (node:fs:1442:3)
    at findFiles (/var/www/html/plugins/zwavejs/resources/zwave-js-ui/server/lib/renderIndex.js:33:28)
    at default_1 (/var/www/html/plugins/zwavejs/resources/zwave-js-ui/server/lib/renderIndex.js:53:28)
    at Layer.handle [as handle_request] (/var/www/html/plugins/zwavejs/resources/zwave-js-ui/node_modules/express/lib/router/layer.js:95:5)
    at next (/var/www/html/plugins/zwavejs/resources/zwave-js-ui/node_modules/express/lib/router/route.js:144:13)
    at /var/www/html/plugins/zwavejs/resources/zwave-js-ui/node_modules/express-rate-limit/dist/index.cjs:222:5
    at /var/www/html/plugins/zwavejs/resources/zwave-js-ui/node_modules/express-rate-limit/dist/index.cjs:142:5

Avez vous des idées ?

Merci :slight_smile:

J’ai eu le même problème en allant directement sur l’URL http://<jeedom_IP>:8091. Le soucis est que le répertoire /var/www/html/plugins/zwavejs/resources/zwave-js-ui/dist n’existe pas.

De plus, le nouveau bouton ne fonctionne pas chez moi. J’ouvre un topic à ce sujet…

Bonjour,

Via URL sur la dernière bêta (je n’ai pas la version sous la main je suis sur mon téléphone) cela fonctionne chez moi.

Autant l’interface cela ne me gêne pas plus que cela… Mais les dépendances avec une erreur cela me gêne un peu plus…

Le problème du bouton est résolu chez moi. J’accède bien à l’URL mais j’ai toujours l’erreur du répertoire dist qui n’existe pas.

Il semble que c’est lié au problème de dépendances car j’ai exactement de même soucis mémoire que @Unnamed71.

Je suis aussi en RPI3 avec un SSD.

@ktn J’ai essayé sur une de mes VM, pas de soucis concernant l’installation des dépendances par contre comme sur mon RPI MQTT manager ne s’installe pas tout seul.

J’ai retenté l’aventure sur le RPI, même erreur ! UI HS…

@Salvialf

Bonjour,

Avez vous une petite idée ? J’hésite à repasser sur un backUp :face_with_monocle: :thinking:

1 « J'aime »

Pfiou ce n’était pas nécessaire de m’interpeller je suis déjà dessus bien entendu.

Je ne vois pas pourquoi « repasser sur un backup », il suffit juste de repasser sur openzwave.

Les logs des dépendances non tronqués seraient très utiles si possible

Sorry, voici les logs complet:
zwavejs_packages.txt (5,6 Ko)

Disons que j’ai peut être un peu joué la confiance et supprimer un peu rapidement OpenZwave :grin: :sweat_smile:

J’attend un peu de voir si une solution est trouvé et sinon je passerai un backup ou ma prod sur la VM.
Wait and see

Ah bah je peux te dire direct de passer tout de suite à la seconde option alors.

Sinon je veux bien ta version de nodejs dans la configuration Jeedom, onglet OS/DB > Vérifications des paquets système ?

Voici:

16.17.1-deb-1nodesource1

Mouais c’était vraiment une bouteille à la mer mon histoire de nodejs je n’y croyais pas moi-même…

En gros nodejs est surchargé à un moment du build d’où l’erreur. Après ce n’est pas réellement bloquant en soit vu que tu le dis toi-même le réseau fonctionne.

Pour info le plugin a été installé sur maintes pi3 sans soucis jusqu’à maintenant. Avec boot sur SSD je ne sais pas mais je doute que ce soit lié.

La seule chose que je vois dans l’immédiat serait de redémarrer Jeedom et relancer l’installation des dépendances zwavejs après le redémarrage pour voir si c’est mieux ?

Il me semble déjà avoir tenté hier mais je relance, le reboot est en cours et je relance derrière.

Ce qui me tracasse c’est que le build ne va pas au bout donc même si aujourd’hui cela fonctionne je me dit que tout n’est peut être pas bon…

Idem :confused:
Même erreur.

Je suis repassé sur mon backup.
J’ai cherché depuis hier et à chaque fois je retombe sur ce genre de retour:

image

J’ai l’impression que cela sert justement à limité la mémoire pour éviter un dépassement de capacité.

1 « J'aime »

J’ai réussi à installer le dépendances sans ereur :smiley:

Pour ça, j’ai dû éditer le fichier /var/www/html/plugins/zwavejs/resources/post_install.sh pour remplacer la ligne

sudo yarn run build

par

sudo NODE_OPTIONS="--max_old_space_size=2048" yarn run build

Et le bouton Interface ZwaveJs UI fonctionne.

Edit:
4096 ne fonctionnait pas, ça me donnait d’autre erreurs. J’ai tenté 2048 et c’est OK.

Edit 2:
Il semble que l’augmentation de la taille du swap soit une autre solution à privilégier. Le fichier post_install.sh doit être modifié à chaque mise à jour du plugin alors que l’augmentation du swap est pérenne.

5 « J'aime »

4096 ce doit être la valeur par défaut de nodejs en version 16

bien joué @ktn par contre faut voir comment implémenter ça maintenant…

Ce qui me dérange dans cette histoire c’est d’avoir
image

alors que l’installation ne s’est pas bien déroulée.

Il faudrait que la script post_install.sh vérifie l’exit status des commandes lancées et informe correctement la core sur le résultat de l’installation.

1 « J'aime »

J’ai fait la modif et je viens de relancer de mon coté ! A voir, cool si c’est ca :slight_smile:

Pour moi dans tous mes plugin j’ai le même bouton relancer.

1 « J'aime »

Pas sûr car si je mettait --max-old-space-size=4096 j’avais une autre erreur dès le lancement du build. J’ai l’impression qu’il n’y a pas assez de mémoire dispo sur le PI pour 4096. La valeur par défaut doit être inférieur à 2048 et être insuffisante pour le build.