Plugin qui ne démarre pas, problème avec nodejs

Bonjour,

Sur une installation toute fraiche, avec Jeedom 4.3.15 en stable sous Docker sur un Synology, je n’arrive pas à lancer le plugin Mysensors

Sun Jan 22 2023 08:10:05 GMT+0000 (Coordinated Universal Time) - Jeedom url : http://127.0.0.1:80/plugins/mySensors/core/api/jeeSensors.php?apikey=xxx&gateway=master, gwAddress : /dev/ttyUSB0
Connection type serial
/var/www/html/plugins/mySensors/resources/node_modules/bindings/bindings.js:121
throw e;
^
Error: The module '/var/www/html/plugins/mySensors/resources/node_modules/@serialport/bindings/build/Release/bindings.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 83. This version of Node.js requires
NODE_MODULE_VERSION 93. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
at Object.Module._extensions..node (node:internal/modules/cjs/loader:1249:18)
at Module.load (node:internal/modules/cjs/loader:1043:32)
at Function.Module._load (node:internal/modules/cjs/loader:878:12)
at Module.require (node:internal/modules/cjs/loader:1067:19)
at require (node:internal/modules/cjs/helpers:103:18)
at bindings (/var/www/html/plugins/mySensors/resources/node_modules/bindings/bindings.js:112:48)
at Object. (/var/www/html/plugins/mySensors/resources/node_modules/@serialport/bindings/lib/linux.js:2:36)
at Module._compile (node:internal/modules/cjs/loader:1165:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1219:10)
at Module.load (node:internal/modules/cjs/loader:1043:32) {
code: 'ERR_DLOPEN_FAILED'
}

D’après la log la NODE MODULE VERSION n’est pas la bonne, donc j’ai installé la version 83 (Nodejs 14.14.0)

root@jeedom:/# npm install -g n                                                                                              
/usr/bin/n -> /usr/lib/node_modules/n/bin/n                                                                                  
+ n@9.0.1                                                                                                                    
updated 1 package in 1.256s                                                                                                  
root@jeedom:/# n 14.14.0                                                                                                     
  installing : node-v14.14.0                                                                                                 
       mkdir : /usr/local/n/versions/node/14.14.0                                                                            
       fetch : https://nodejs.org/dist/v14.14.0/node-v14.14.0-linux-x64.tar.xz                                               
     copying : node/14.14.0                                                                                                  
   installed : v14.14.0 (with npm 6.14.8)                                                                                    
root@jeedom:/# node -v                                                                                                       
v14.14.0                                                                                                                     

Même après redémarrage du container et de Jeedom, le plugin indique que j’utilise la version 93. De plus je ne peu pas re lancer les dépendances mais il me date la dernière installation. Je n’ai pas de log à fournir de celle-ci, car je l’ai vidé :face_with_diagonal_mouth:

Voilà, je ne sais pas ce qui cloche, ou que je n’ai pas fait ! un peu d’aide serait la bienvenue.

Salut

Page santé jeedom?

Antoine

… Et la page santé

Bonjour,

pour les plugins s’appuyant sur nodejs, actuellement il est nécessaire d’avoir un nodejs en V16, qui n’est pas installé par défaut avec Buster/Bullseye et le core jeedom.
L’installation de nodejs peut se faire via l’installation des dépendances d’un plugin utilisant l’ancienne méthode d’installation des dépendances (comme le fait par exemple le plugin alexaapi, avec le script d’install et la lib dependance de nebz) ou en utilisant le nouveau mécanisme d’installation des dépendances, par le core jeedom (à partir de 4.2) avec le fichier plugin_info/packages.json (comme le fait par exemple le plugin zwavejs).

mySensors, comme espeasy ou rflink sont des plugins de lunarok, s’appuyant sur nodejs, utilisant le nouveau mécanisme d’installation des dépendances, mais d’une part le packages.json du plugin ne dit pas d’installer nodejs, et d’autre part il y a une erreur de syntaxe pour la clé npm (la virgule est en trop), ce qui a pour effet de ne rien installer (pas de modules node) et de ne pas générer de log _packages.

Ci-après la modification est décrite pour mySensors.
Pour espeasy ou rflink il suffit de remplacer mySensors par espeasy ou rflink.

Aller dans :
Réglages > Système > Editeur de fichiers
plugins/mySensors/plugin_info/packages.json

remplacer :

{
  "npm" : {
    "plugins/mySensors/resources": {},
    }
  }

par :

{
  "apt":{
    "nodejs" : {}
  },
  "npm" : {
      "plugins/mySensors/resources": {}
    }
  }

Bien supprimer la virgule pour la clé npm.
Relancer les dépendances.
(ce fichier est écrasé lors d’une mise à jour ou d’une réinstallation du plugin)
Le résultat de l’installation des paquets se voit dans :
Réglages > Système > Configuration > OS/DB > Vérification des packages système


Package 			               Type 	Status 	Obligatoire 	Voulu par
nodejs				                apt	        OK	        oui		mySensors
plugins/mySensors/resources	        npm	        OK	        oui		mySensors

akenad :slight_smile:

3 « J'aime »

Vous avez installé n et donc cassé tout les chemins normaux de nodejs. Il faut repartir sur un container propre et suivre ce que @akenad vous propose

2 « J'aime »

Merci de ton aide,

J’ai donc modifié le packages.json mais les dépendances ne veulent pas se relancer. Du moins j’ai rien dans la log.


D’ailleurs, nodejs v16 correspond au NODE_MODULE_VERSION 93 que j’ai eu dans mes log (voir plus haut). Comme je ne peu pas re installer mes dépendances, je l’ai fait à la manau en installant Node.js v16.12.0. Mais rien ne change pour le plugin, toujours le même message en boucle.
Il y a un moyen de forcer les dépendances ?

1 « J'aime »

OK, merci. C’est ce que je comptais faire en dernier recours.

C’est tout bon ! J’ai refait un container en appliquant tes recommandations et c’est reparti.
Merci à vous deux.

Pour ma culture personnelle, j’aurais du faire comment, avec quoi, pour installer Nodejs?

1 « J'aime »

Via le plugin, il est sensé le faire, si pas, il faut faire un ticket.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.