J’ai un gros souci avec mon noeud spécialisé expire-members.
je l’ai entièrement réinstaller avec npm :
git clone https://github.com/librelois/duniter-expire-members-specialize-node.git
nvm use 6
cd duniter
npm install
npm test
et les test unitaires ne fonctionnent pas :
duniter@ifee:~/duniter-expire-members-specialize-node$ npm test
> RML8@1.0.0 test /home/www/e/elois/duniter.elois.ifee.fr/duniter-expire-members-specialize-node
> mocha tests.js
RML8
1) installation
0 passing (3s)
1 failing
1) RML8 installation:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
at process._tickCallback (internal/process/next_tick.js:103:7)
npm ERR! Test failed. See above for more details.
Et lorsque j’essaye de configurer mon nœud il refuse :
duniter@ifee:~/duniter-expire-members-specialize-node$ node expire_members_specialized_node.js config --autoconf --cpu 10
/home/www/e/elois/duniter.elois.ifee.fr/duniter-expire-members-specialize-node/expire_members_specialized_node.js:23
duniter.statics.cli((duniterServer) => co(function*() {
^
TypeError: duniter.statics.cli is not a function
at Object.<anonymous> (/home/www/e/elois/duniter.elois.ifee.fr/duniter-expire-members-specialize-node/expire_members_specialized_node.js:23:17)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
Du coup j’ai installer un nœud Duniter “classique” sur la même machine avec la même procédure :
Tu peux désormais t’inspirer du code de Remuniter : https://github.com/duniter/remuniter. Je l’ai migré vers la nouvelle API interne. Le point d’entrée est le fichier index.js, la commande pour lancer Remuniter est node index.js remuniter.
Je t’ai dit que désormais on parlerait plutôt de modules, mais avec le recul je me rends compte qu’on peut :
soit réaliser des modules optionnels à Duniter
soit réaliser des nœuds spécialisés
Remuniter reste donc dans cette dernière catégorie.
Tu pourras également voir que le code propre à Remuniter (serveur web + logique de paiement) a été scindé en plusieurs fichiers, pour y voir plus clair, tous dans le répertoire /lib.
Voilà, en espérant que tu t’y retrouveras ! Hésites pas à poser quelques questions au besoin.
c’est drole, j’étais justement en train de cloner remuniter et de farfouiller le source
j’avoue que je suis un peu perdu, d’autant que le JS c’est récent pour moi.
J’ai réussi à placer la requête qui récupère le paramètre msValidity juste avant la main loop dans lib/main.js et la requete s’execute correctement ^^
En revanche, je ne sais pas comment récupérer les paramètres get en mode websocket ?
Aussi je n’ai pas trouver à quel endroit tu écrit le rendu html de la page ?
En mode WebSocket, tu n’es plus vraiment en mode HTTP classique. Tu émets des messages et en reçois d’autres, mais sans le cadre d’un échange.
Donc c’est à toi, en JS côté client, de récupérer cette valeur (mettons A) et l’envoyer via WS au serveur, sans attente de réponse. Et éventuellement, côté serveur, tu auras programmé l’envoi d’un message à ton client sur réception de la valeur A.
Le HTML est figé à la compilation de Remuniter, après cd ui && yarn. Cela génère le HTML dans le dossier public/.
Mais attention Remuniter utilise des technos avancées (AngularJS, WebSocket, Jade, et Brunch pour compiler le tout). Cela risque de t’embrouiller dans un 1er temps, je te conseille de démarrer plus simplement que ça ! Tu pourras toujours modifier le rendu HTML plus tard.
ok c’est encore obscur pour moi les WebSocket je vais refaire en mode HTTP classique pour le moment !
Oui j’ai compris ça dans la soirée. Effectivement je ne vais pas faire aussi poussé pour l’instant. Je verrai çà quand les fonctionnalités de mon nœud seront un peu plus avancé ^^