Cela fait 2 jours que je galère en ayant parcouru les forum de la JEEDOM community et autres , nom problème est certes connu ici mais aucune des solution n'a marché pour moi .
Mon systeme est sur un Raspberry pi 3+ uname -a : Linux jeedom 5.10.103-v7 ( 32bits) Jeedom Version : 4.3.15 image telechargée sur le site JEEDOM.
- sur l'execution du demon qui ne se lance pas voici le log :
Sun Feb 05 2023 09:54:10 GMT+0100 (Central European Standard Time) - Jeedom url : http://127.0.0.1:80/plugins/rflink/core/api/rflink.php?apikey=xxxxxxx, gwAddress : /dev/ttyACM0
internal/modules/cjs/loader.js:638
throw err;
^
Error: Cannot find module 'serialport'
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
at Function.Module._load (internal/modules/cjs/loader.js:562:25)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at launchGateway (/var/www/html/plugins/rflink/resources/rflink.js:88:20)
at Object.<anonymous> (/var/www/html/plugins/rflink/resources/rflink.js:178:1)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
Mais le plus dommage , c’est que la reinstall des dépendance ne fonctionne pas , même pas un log package quand j’appuie sur relancer la touche réagis mais y’a rien qui se passe
j’ai quand même réussi a installer manuellement telnet client sudo npm install telnet-client mais normalement la reinstall dépendance devrait se charger de ca.
J’ai essayé la RFlink beta et stable rien de nouveau .
[/code] jeedom@jeedom:~ $ sudo npm install serialport
[sudo] Mot de passe de jeedom :
npm WARN npm npm does not support Node.js v10.24.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8, 9.
npm WARN npm You can find the latest version at https://nodejs.org/
> @serialport/bindings-cpp@10.8.0 install /home/jeedom/node_modules/@serialport/bindings-cpp
> node-gyp-build
npm WARN saveError ENOENT: no such file or directory, open '/home/jeedom/package.json'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open '/home/jeedom/package.json'
npm WARN jeedom No description
npm WARN jeedom No repository field.
npm WARN jeedom No README data
npm WARN jeedom No license field.
+ serialport@10.5.0
added 19 packages from 101 contributors in 16.663s [/code]
et pourtant toujours la meme erreur : Error: Cannot find module ‹ serialport › en relançant le demon , « npm WARN npm npm does not support Node.js v10.24. »
Merci Akenad , avec cette manip j’ai enfin une reinstall des dépendances , malgre tout j’ai un NOK a la fin avec des log qui semblent très corrects :
+ echo '*******************Begin of package installation******************'
*******************Begin of package installation******************
+ touch /tmp/jeedom_install_in_progress_rflink
+ echo 1
+ echo 2
+ sudo chmod +x /var/www/html/core/class/../../resources/install_nodejs.sh
+ sudo /var/www/html/core/class/../../resources/install_nodejs.sh
Hit:1 http://archive.raspberrypi.org/debian buster InRelease
Hit:2 http://raspbian.raspberrypi.org/raspbian buster InRelease
Hit:3 https://deb.nodesource.com/node_16.x buster InRelease
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
apt-utils is already the newest version (1.8.2.3).
build-essential is already the newest version (12.6).
git is already the newest version (1:2.20.1-2+deb10u7).
lsb-release is already the newest version (10.2019051400+rpi1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
[Check Version NodeJS actuelle : v16.19.0 : [ OK ]
[Check Prefix : /usr and sudo prefix : /usr and www-data prefix : /usr : [ OK ]
+ echo 3
+ sudo chmod +x /var/www/html/core/class/../../resources/install_nodejs.sh
+ sudo /var/www/html/core/class/../../resources/install_nodejs.sh
Hit:1 http://archive.raspberrypi.org/debian buster InRelease
Hit:2 http://raspbian.raspberrypi.org/raspbian buster InRelease
Hit:3 https://deb.nodesource.com/node_16.x buster InRelease
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
apt-utils is already the newest version (1.8.2.3).
build-essential is already the newest version (12.6).
git is already the newest version (1:2.20.1-2+deb10u7).
lsb-release is already the newest version (10.2019051400+rpi1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
[Check Version NodeJS actuelle : v16.19.0 : [ OK ]
[Check Prefix : /usr and sudo prefix : /usr and www-data prefix : /usr : [ OK ]
+ echo 4
+ echo 5
+ php /var/www/html/core/class/../php/jeecli.php plugin dependancy_end rflink
+ rm /tmp/jeedom_install_in_progress_rflink
+ echo '*******************End of package installation******************'
*******************End of package installation******************
J’ai donc relance une install du serialport car j’avais toujours une erreur Error: Cannot find module ‹ serialport › sur les log du lancement du demon :
jeedom@jeedom:~ $ sudo npm install serialport npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
up to date, audited 20 packages in 11s
12 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
npm notice
npm notice New major version of npm available! 8.19.3 -> 9.4.1
npm notice Changelog: https://github.com/npm/cli/releases/tag/v9.4.1
npm notice Run npm install -g npm@9.4.1 to update!
npm notice
dois je essayer un : sudo npm install -g --force serialport ?
Il ne faut pas lancer n’importe quoi comme commande npm sans savoir ce que l’on fait.
ça peut installer les node modules pas au bon endroit pour une prise en compte par le plugin, voir rendre globalement incohérent une installation jeedom.
En résumé, ce qu’explique les 2 liens cités précédemment, c’est d’avoir :
-1)
Réglages > Système > Editeur de fichiers
plugins/rflink/plugin_info/packages.json
/!\ ATTENTION : bien supprimer la virgule pour la clé npm qui existe dans le fichier initial.
Ce qui a pour effet d’installer les ressources qui vont bien dans :
plugins/rflink/resources/node_modules
entre autres serialport et telnet-client
-2)
créer le lien symbolique nodejs → node :
(car le plugin utilise la commande nodejs et l’installation de nodejs n’installe que la commande node pour le paquet nodejs v16 installé actuellement)
Dans
Réglages > Système > Configuration > OS/DB > Administration Système
taper la commande :
sudo ln -s 'which node' 'which node'js
Par ailleurs si nécessaire, pour rattraper le coup tu peux éventuellement sans garantie tenter de supprimer s’il existe le fichier : plugins/rflink/resources/package-lock.json
le fichier plugins/rflink/plugin_info/packages.json est bien conforme a ce que tu decris , et je n’ai pas de fichier plugins/rflink/resources/package-lock.json.
Par contre je n’ai plus de log package après reinstall des dépendances
Probablement parce que les dépendances ont été correctement installées lors du lancement de l’installation des dépendances précédente et qu’une nouvelle relance n’installe rien de plus.
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 rflink
plugins/rflink/resources npm OK oui rflink
par ailleurs voir ce que je dis sur node et nodejs plus haut.
Non.
ton lien symbolique est ok. Tu n’as rien à faire.
le fichier /plugins/rflink/resources/package.jon contient :
{
"name": "JeedomRflink",
"version": "0.0.1",
"description": "Node to use Rflink with Jeedom",
"license": "GPL-3.0",
"repository": "npm/npm",
"dependencies": {
"request": "latest",
"serialport": "~9.2.8",
"telnet-client": "latest"
}
}
sachant que les versions de nodejs et npm évoluent dans le temps, il est possible maintenant qu’il y ait un problème sur le choix de la version serialport par rapport à l’usage que le plugin en fait.
c’est aspect est à mon avis à ce stade à soumettre au développeur.
A noter par ailleurs que l’installation de nodejs/npm ne ce fait pas de la même manière entre le core jeedom et par exemple lors de l’installation des dépendances du plugin alexaapi.
Ce serait moi j’essaierais d’installer le plugin alexaapi et ses dépendances,
puis de revenir sur le plugin rflink, relancer l’installation des dépendances et redémarrer le démon.
J’ai suivi tes conseils , en fait sans surprise tu avais raison j’ai reinstallé une distrib JEEDOM , relancé les dependances , recree les liens et tout est OK
Pour mémoire , il ne faut pas installer les modules npm ni nodejs a
la main comme je l’avais fait auparavent cela a corompu la reinstall des dependances.
Le fait d’installer le plugin alexapi n’a pas resolu le pb
encore un grand merci a la communauté et particulièrement a toi pour ton aide.