Mise en place environnement de développement Duniter

Situation initiale : nvm et yarn déjà installer, dépôt duniter déjà cloné.

Ce que j’ai fait :

  • npm use 9.4.0
  • Mise a jours la branche master de mon dépôt Duniter
  • Création de ma branche a partir de la branche master
  • yarn
  • npm test

J’ai 723 tests qui passent sur 726, voici les 3 qui échouent, est ce normal ? Avez vous le même problème ? Si oui comment vous le résolvez ?

J’ai ensuite essayé de lancer duniter, en vain :

$ bin/duniter start
module.js:557
    throw err;
    ^

Error: Cannot find module 'wotb'
    at Function.Module._resolveFilename (module.js:555:15)
    at Function.Module._load (module.js:482:25)
    at Module.require (module.js:604:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/elois/dev/duniter/nodes/typescript/duniter/app/lib/wot.js:15:14)
    at Module._compile (module.js:660:30)
    at Object.Module._extensions..js (module.js:671:10)
    at Module.load (module.js:573:32)
    at tryModuleLoad (module.js:513:12)
    at Function.Module._load (module.js:505:3)

Cela ne n’empêche pas de commencer mes développements et même de les tester avec des TU et TI. Mais ça va me bloquer pour faire des tests manuels grandeur nature :slight_smile:

@cgeek @Moul @bpresles avez vous déjà rencontrés ce problème avec wotb ?

EDIT: Je crois que ça viens du fait qu’il n’a pas trnaspilé car je n’ai pas tsc. J’ai donc installé tsc avec la commande apt install node-typescript puis relancé yarn, et la transpilation échoue :

$ yarn
yarn install v1.19.2
warning npm-shrinkwrap.json found. This will not be updated or respected. See https://yarnpkg.com/en/docs/migrating-from-npm for more information.
[1/5] Validating package.json...
[2/5] Resolving packages...
success Already up-to-date.
$ tsc
app/lib/common-libs/websocket.ts(14,21): error TS7016: Could not find a declaration file for module 'ws'. '/home/elois/dev/duniter/nodes/typescript/duniter/node_modules/ws/index.js' implicitly has an 'any' type.
  Try `npm install @types/ws` if it exists or add a new declaration (.d.ts) file containing `declare module 'ws';`
app/lib/dal/drivers/LevelDBDriver.ts(14,26): error TS2307: Cannot find module 'levelup'.
app/lib/dal/drivers/LevelDBDriver.ts(15,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/drivers/LevelDBDriver.ts(16,48): error TS2307: Cannot find module 'abstract-leveldown'.
app/lib/dal/drivers/LevelDBDriver.ts(17,28): error TS2307: Cannot find module 'leveldown'.
app/lib/dal/drivers/LevelDBDriver.ts(18,26): error TS2307: Cannot find module 'memdown'.
app/lib/dal/fileDAL.ts(76,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBBindex.ts(2,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBBlockchain.ts(2,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBCindex.ts(3,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBCindex.ts(9,39): error TS2307: Cannot find module 'abstract-leveldown'.
app/lib/dal/indexDAL/leveldb/LevelDBDividend.ts(6,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBDividend.ts(9,39): error TS2307: Cannot find module 'abstract-leveldown'.
app/lib/dal/indexDAL/leveldb/LevelDBIindex.ts(3,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBMindex.ts(3,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBSindex.ts(3,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBTable.ts(1,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/LevelDBTable.ts(2,39): error TS2307: Cannot find module 'abstract-leveldown'.
app/lib/dal/indexDAL/leveldb/LevelDBTable.ts(90,21): error TS7006: Parameter 'data' implicitly has an 'any' type.
app/lib/dal/indexDAL/leveldb/LevelDBTable.ts(101,21): error TS7006: Parameter 'data' implicitly has an 'any' type.
app/lib/dal/indexDAL/leveldb/LevelDBTable.ts(116,21): error TS7006: Parameter 'data' implicitly has an 'any' type.
app/lib/dal/indexDAL/leveldb/LevelDBWallet.ts(2,23): error TS2307: Cannot find module 'levelup'.
app/lib/dal/indexDAL/leveldb/indexers/LevelDBWrittenOnIndexer.ts(1,23): error TS2307: Cannot find module 'levelup'.
app/lib/system/directory.ts(22,23): error TS2307: Cannot find module 'levelup'.
app/lib/system/directory.ts(23,33): error TS2307: Cannot find module 'abstract-leveldown'.
app/modules/bma/lib/bma.ts(128,14): error TS2339: Property 'on' does not exist on type 'WebSocketServer'.
app/modules/bma/lib/bma.ts(133,14): error TS2339: Property 'on' does not exist on type 'WebSocketServer'.
app/modules/bma/lib/bma.ts(145,14): error TS2339: Property 'on' does not exist on type 'WebSocketServer'.
app/modules/bma/lib/bma.ts(154,54): error TS2339: Property 'clients' does not exist on type 'WebSocketServer'.
app/modules/bma/lib/bma.ts(156,54): error TS2339: Property 'clients' does not exist on type 'WebSocketServer'.
app/modules/bma/lib/bma.ts(164,52): error TS2339: Property 'clients' does not exist on type 'WebSocketServer'.
app/modules/ws2p/lib/WS2PConnection.ts(381,17): error TS2339: Property 'on' does not exist on type 'WebSocket'.
app/modules/ws2p/lib/WS2PConnection.ts(384,17): error TS2339: Property 'on' does not exist on type 'WebSocket'.
app/modules/ws2p/lib/WS2PConnection.ts(386,15): error TS2339: Property 'on' does not exist on type 'WebSocket'.
app/modules/ws2p/lib/WS2PConnection.ts(386,43): error TS2339: Property 'close' does not exist on type 'WebSocket'.
server.ts(44,23): error TS2307: Cannot find module 'levelup'.
test/integration/misc/http-api.ts(239,14): error TS2339: Property 'on' does not exist on type 'WebSocket'.
test/integration/misc/http-api.ts(240,16): error TS2339: Property 'terminate' does not exist on type 'WebSocket'.
test/integration/misc/http-api.ts(248,14): error TS2339: Property 'once' does not exist on type 'WebSocket'.
test/integration/misc/http-api.ts(268,14): error TS2339: Property 'on' does not exist on type 'WebSocket'.
test/integration/misc/http-api.ts(295,14): error TS2339: Property 'on' does not exist on type 'WebSocket'.
test/integration/misc/http-api.ts(296,16): error TS2339: Property 'terminate' does not exist on type 'WebSocket'.
test/integration/misc/http-api.ts(299,14): error TS2339: Property 'on' does not exist on type 'WebSocket'.
test/integration/misc/http-api.ts(300,16): error TS2339: Property 'ping' does not exist on type 'WebSocket'.
test/integration/misc/http-api.ts(310,14): error TS2339: Property 'on' does not exist on type 'WebSocket'.
test/integration/tools/toolbox.ts(755,9): error TS2339: Property 'on' does not exist on type 'WebSocketServer'.
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.

Mes versions :

$ tsc --version
Version 2.7.2
$node -v
v9.4.0
$npm -v
5.6.0
$ yarn -v
1.19.2

Serait-ce que ma version de tsc est trop récente ? @cgeek qu’elle version de tsc utilise tu ?

Je me suis basé sur le wiki : https://duniter.org/fr/wiki/duniter/installer/#compilation-manuelle
Or il n’indique pas d’installer tsc (c’est pour cela que je ne l’ai pas fait), je veut bien mettre a jours le wiki quand j’aurais un environnement fonctionnel :wink:

Aucun soucis sur une Ubuntu 18.04.3 fraîchement installée (pré-installer Yarn, Nvm et build-essential) :

git clone https://git.duniter.org/nodes/typescript/duniter.git
cd duniter
git checkout master
nvm i 9.4.0
yarn
npm test

image

Il faut par contre 4Go de RAM libre au moment de les lancer. NodeJS ne libère pas sa mémoire au fur et à mesure lors des tests.

1 Like

Aussi pour tester un lancement, je te conseille plutôt :

bin/duniter direct_start

Car « start » tout court c’est pour le démon.

1 Like

Merci @cgeek :slight_smile:

Je pense que le problème viens du fait que j’ai utilisé un dépot existant de duniter que j’avais cloné il y a plus de 8 mois, il doit garder des fichiers caches quelque part je ne sais pas.

J’ai recloné le dépot dans un nouveau dossier (je n’aurais pas penser devoir être obligé de faire ça), mais effectivement ça fonctionne mieux, ça se transpile bien et j’arrive a lancer le noeud.

Concernant les tests je ne les aient pas encore rejouez mais j’ai 16 Go de RAM donc le problème ne viens pas d’un manque de RAM, peut-être que ça viens du fait que je faisais plein de choses sur mon pc en même temps (j’ai l’habitude de pouvoir continuer a utiliser mon pc sans problème quand les tests de Dunitrust s’éxécutent).

Il y a un dossier node_modules à la racine du projet. Il n’était probablement pas vide et buildé avec une ancienne version de Node, d’où le changement de comportement suite à un clone.

Ça ne peut pas être ça, j’avais supprimé totalement ce dossier en ligne de commande rm -rf node_modules

Donc c’est autre chose que tu as fait différemment, car il n’y a que ça qui peut varier au sein des sources à branche égale. Enfin bref.

1 Like

Il peut y avoir des fichiers sources (tests inclus) qu’on a supprimés du contrôle de git, mais qui restent des fois lors des fetch. Du coup, il arrive pas à faire des imports.

1 Like