Installer do•doc en mode développement

Bonjour,

Voici un tutoriel pour installer do•doc 10 ou une autre version de dodoc en mode développement sur Linux (ubuntu, debian, etc.) et Windows (voir ci-dessous).

Pour Linux :

  1. installer git :
    sudo apt install git

  2. installer nvm :
    wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash

  3. ouvrir le dossier qui doit contenir le dossier du code source de dodoc avec le terminal et la commande cd

  4. cloner le repo de dodoc vers un dossier nommé « dodoc10 » (ou autre chose si vous le souhaitez) :
    git clone https://github.com/l-atelier-des-chercheurs/dodoc.git dodoc10

  5. ouvrir ce dossier :
    cd dodoc10

  6. choisir la branche de dodoc à utiliser :

    • main = version appli (electron, c’est à dire avec une fenêtre dédiée qui s’ouvre au lancement)
    • main-node = version node (sans electron donc plus légère, mais sans fenêtre qui s’ouvre au démarrage, il faut ouvrir un navigateur web sur l’adresse indiquée au lancement). Si vous voulez faire une installation pour un serveur en ligne, c’est celle-là.

    Il y a aussi les branches suivantes de disponibles :

    • next = version en cours de développement, comportant les dernières fonctionnalité majeures mais pas forcément stable (donc pas recommandé pour une utilisation grand public)
    • next-node = équivalent, mais pour serveur en ligne.

    Pour charger une branche :
    git checkout main

  7. avec nvm, charger la bonne version de node :
    nvm use
    Si celle-ci n’est pas installée, le message qui s’affiche vous indiquera qu’il faut l’installer. Lancez
    nvm install
    Puis relancez la commande nvm use

  8. En option, si vous souhaitez que les fichiers STL et PDF envoyés dans dodoc possèdent une vignette d’aperçu, il est nécessaire d’exécuter la ligne correspondant à votre OS sur la page suivante : GitHub - Automattic/node-canvas: Node canvas is a Cairo backed Canvas implementation for NodeJS.
    Si vous préférez vous passer des ces fonctionnalités, remplacez la commande indiquée à l’étape 9 par npm install --no-optional

  9. Installez ensuite les dépendances de la partie « serveur » (ça peut prendre 5 à 10 minutes) :
    npm install

  10. Sur la branche next uniquement, il faut « compiler » le code utilisé par la partie « client », dans le navigateur. Pour se faire, ouvrez le dossier /client et lancez les commandes nvm use puis npm install et enfin npm run build

  11. Enfin, vous pouvez retourner au dossier dodoc10 et lancer dodoc :

  • npm run debug pour avoir les messages de debug et le détail de ce qu’il se passe côté serveur dans le terminal
  • npm run start pour avoir le minimum de messages dans le terminal

Et ça devrait marcher !
Si vous rencontrez des soucis n’hésitez pas à poster ci-dessous :slight_smile:
À terme je rapatrierai cette doc dans le fichier README sur github.

Pour Windows

Les instructions sont globalement les mêmes :

À noter aussi que si vous galérez lors du npm install, ça vient probablement des dépendances liées à la visualisation de la première page d’un PDF ou d’un fichier 3D en STL. Si vous pouvez vivre sans ces fonctionnalités, vous pouvez installer dodoc en utilisant la commande :

npm install --no-optional

1 « J'aime »

Ça avait bien commencé… jusqu’à npm install

julien@CM57-DEL12:~$ cd dodocgit
julien@CM57-DEL12:~/dodocgit$  git clone https://github.com/l-atelier-des-chercheurs/dodoc.git dodoc10
Clonage dans 'dodoc10'...
remote: Enumerating objects: 59215, done.
remote: Counting objects: 100% (4655/4655), done.
remote: Compressing objects: 100% (790/790), done.
remote: Total 59215 (delta 4054), reused 4454 (delta 3863), pack-reused 54560
Réception d'objets: 100% (59215/59215), 242.03 Mio | 9.51 Mio/s, fait.
Résolution des deltas: 100% (38529/38529), fait.
julien@CM57-DEL12:~/dodocgit$ cd dodoc10
julien@CM57-DEL12:~/dodocgit/dodoc10$  git checkout dodoc2-next
La branche 'dodoc2-next' est paramétrée pour suivre la branche distante 'dodoc2-next' depuis 'origin'.
Basculement sur la nouvelle branche 'dodoc2-next'
julien@CM57-DEL12:~/dodocgit/dodoc10$ nvm use
Found '/home/julien/dodocgit/dodoc10/.nvmrc' with version <v16.14.2>
Now using node v16.14.2 (npm v8.5.0)
julien@CM57-DEL12:~/dodocgit/dodoc10$  nvm install 16.14.2
v16.14.2 is already installed.
Now using node v16.14.2 (npm v8.5.0)
julien@CM57-DEL12:~/dodocgit/dodoc10$  npm install
npm WARN deprecated har-validator@5.1.5: this library is no longer supported
npm WARN deprecated asar@3.2.0: Please use @electron/asar moving forward.  There is no API change, just a package name change
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated uuid@3.4.0: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated electron-osx-sign@0.6.0: Please use @electron/osx-sign moving forward. Be aware the API is slightly different
npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142

> dodoc@10.0.0-dev postinstall
> electron-builder install-app-deps

  • electron-builder  version=23.6.0
  • loaded configuration  file=package.json ("build" field)
  • rebuilding native dependencies  dependencies=canvas@2.10.1, platform-folders@0.6.0, sharp@0.31.1 platform=linux arch=x64
  • install prebuilt binary  name=sharp version=0.31.1 platform=linux arch=x64 napi=
  ⨯ cannot execute  cause=exit status 1
                    errorOut=npm ERR! code 1
    npm ERR! path /home/julien/dodocgit/dodoc10/node_modules/canvas
    npm ERR! command failed
    npm ERR! command sh -c node-pre-gyp install --fallback-to-build --update-binary
    npm ERR! Failed to execute '/home/julien/.nvm/versions/node/v16.14.2/bin/node /home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --update-binary --module=/home/julien/dodocgit/dodoc10/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/home/julien/dodocgit/dodoc10/node_modules/canvas/build/Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v19.0' (1)
    npm ERR! node-pre-gyp info it worked if it ends with ok
    npm ERR! node-pre-gyp info using node-pre-gyp@1.0.9
    npm ERR! node-pre-gyp info using node@16.14.2 | linux | x64
    npm ERR! node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.10.1/canvas-v2.10.1-electron-v19.0-linux-glibc-x64.tar.gz
    npm ERR! node-pre-gyp ERR! install response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.10.1/canvas-v2.10.1-electron-v19.0-linux-glibc-x64.tar.gz 
    npm ERR! node-pre-gyp WARN Pre-built binaries not installable for canvas@2.10.1 and electron@19.0.4 (electron-v19.0 ABI, glibc) (falling back to source compile with node-gyp) 
    npm ERR! node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.10.1/canvas-v2.10.1-electron-v19.0-linux-glibc-x64.tar.gz 
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp info using node-gyp@8.4.1
    npm ERR! gyp info using node@16.14.2 | linux | x64
    npm ERR! gyp info ok 
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp info using node-gyp@8.4.1
    npm ERR! gyp info using node@16.14.2 | linux | x64
    npm ERR! gyp info find Python using Python version 3.8.10 found at "/usr/bin/python3"
    npm ERR! gyp info spawn /usr/bin/python3
    npm ERR! gyp info spawn args [
    npm ERR! gyp info spawn args   '/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
    npm ERR! gyp info spawn args   'binding.gyp',
    npm ERR! gyp info spawn args   '-f',
    npm ERR! gyp info spawn args   'make',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/home/julien/dodocgit/dodoc10/node_modules/canvas/build/config.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/home/julien/.electron-gyp/19.0.4/include/node/common.gypi',
    npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
    npm ERR! gyp info spawn args   '-Dvisibility=default',
    npm ERR! gyp info spawn args   '-Dnode_root_dir=/home/julien/.electron-gyp/19.0.4',
    npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp',
    npm ERR! gyp info spawn args   '-Dnode_lib_file=/home/julien/.electron-gyp/19.0.4/<(target_arch)/node.lib',
    npm ERR! gyp info spawn args   '-Dmodule_root_dir=/home/julien/dodocgit/dodoc10/node_modules/canvas',
    npm ERR! gyp info spawn args   '-Dnode_engine=v8',
    npm ERR! gyp info spawn args   '--depth=.',
    npm ERR! gyp info spawn args   '--no-parallel',
    npm ERR! gyp info spawn args   '--generator-output',
    npm ERR! gyp info spawn args   'build',
    npm ERR! gyp info spawn args   '-Goutput_dir=.'
    npm ERR! gyp info spawn args ]
    npm ERR! Package pixman-1 was not found in the pkg-config search path.
    npm ERR! Perhaps you should add the directory containing `pixman-1.pc'
    npm ERR! to the PKG_CONFIG_PATH environment variable
    npm ERR! No package 'pixman-1' found
    npm ERR! gyp: Call to 'pkg-config pixman-1 --libs' returned exit status 1 while in binding.gyp. while trying to load binding.gyp
    npm ERR! gyp ERR! configure error 
    npm ERR! gyp ERR! stack Error: `gyp` failed with exit code: 1
    npm ERR! gyp ERR! stack     at ChildProcess.onCpExit (/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/lib/configure.js:259:16)
    npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
    npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
    npm ERR! gyp ERR! System Linux 5.15.0-60-generic
    npm ERR! gyp ERR! command "/home/julien/.nvm/versions/node/v16.14.2/bin/node" "/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--update-binary" "--module=/home/julien/dodocgit/dodoc10/node_modules/canvas/build/Release/canvas.node" "--module_name=canvas" "--module_path=/home/julien/dodocgit/dodoc10/node_modules/canvas/build/Release" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=electron-v19.0"
    npm ERR! gyp ERR! cwd /home/julien/dodocgit/dodoc10/node_modules/canvas
    npm ERR! gyp ERR! node -v v16.14.2
    npm ERR! gyp ERR! node-gyp -v v8.4.1
    npm ERR! gyp ERR! not ok 
    npm ERR! node-pre-gyp ERR! build error 
    npm ERR! node-pre-gyp ERR! stack Error: Failed to execute '/home/julien/.nvm/versions/node/v16.14.2/bin/node /home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js configure --fallback-to-build --update-binary --module=/home/julien/dodocgit/dodoc10/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/home/julien/dodocgit/dodoc10/node_modules/canvas/build/Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v19.0' (1)
    npm ERR! node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/home/julien/dodocgit/dodoc10/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js:89:23)
    npm ERR! node-pre-gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
    npm ERR! node-pre-gyp ERR! stack     at maybeClose (node:internal/child_process:1092:16)
    npm ERR! node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
    npm ERR! node-pre-gyp ERR! System Linux 5.15.0-60-generic
    npm ERR! node-pre-gyp ERR! command "/home/julien/.nvm/versions/node/v16.14.2/bin/node" "/home/julien/dodocgit/dodoc10/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--update-binary"
    npm ERR! node-pre-gyp ERR! cwd /home/julien/dodocgit/dodoc10/node_modules/canvas
    npm ERR! node-pre-gyp ERR! node -v v16.14.2
    npm ERR! node-pre-gyp ERR! node-pre-gyp -v v1.0.9
    npm ERR! node-pre-gyp ERR! not ok
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/julien/.npm/_logs/2023-02-15T19_30_44_626Z-debug-0.log
    
                    command=/home/julien/.nvm/versions/node/v16.14.2/bin/node /home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/bin/npm-cli.js rebuild canvas@2.10.1 platform-folders@0.6.0
                    workingDir=
npm ERR! code 1
npm ERR! path /home/julien/dodocgit/dodoc10
npm ERR! command failed
npm ERR! command sh -c electron-builder install-app-deps

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/julien/.npm/_logs/2023-02-15T19_29_43_825Z-debug-0.log
julien@CM57-DEL12:~/dodocgit/dodoc10$

As-tu bien réalisé l’étape 8 ?

Oui mais je pense que c’est là que je me suis perdu entre les prérequis, les compilations et le reste…
Je vais reprendre à partir de là.

Sur un Ubuntu 20.04 c’est juste cette commande là à lancer :

$ sudo apt-get install build-essential clang libdbus-1-dev libgtk-3-dev \
                       libnotify-dev libasound2-dev libcap-dev \
                       libcups2-dev libxtst-dev \
                       libxss1 libnss3-dev gcc-multilib g++-multilib curl \
                       gperf bison python3-dbusmock openjdk-8-jre

… à priori, il peut y avoir des surprises :slight_smile:

Non ça ça passe, tout est bon.

Voici le début de ce que j’ai dans le terminal
julien@CM57-DEL12:~/dodocgit/dodoc10$ npm install

> dodoc@10.0.0-dev postinstall
> electron-builder install-app-deps

  • electron-builder  version=23.6.0
  • loaded configuration  file=package.json ("build" field)
  • rebuilding native dependencies  dependencies=canvas@2.10.1, platform-folders@0.6.0, sharp@0.31.1 platform=linux arch=x64
  • install prebuilt binary  name=sharp version=0.31.1 platform=linux arch=x64 napi=
  ⨯ cannot execute  cause=exit status 1
                    errorOut=npm ERR! code 1

Et j’ai ensuite une très longue liste de messages d’erreurs

Pourrais-tu basculer sur la branche dodoc2-next-node et refaire ce npm install ?
Pour voir si le soucis se trouve côté electron ou d’une dépendance à installer (je pense en particulier à sharp et canvas). Sur ma VM Ubuntu 20.04 j’ai pu faire l’installation sans soucis.

1 « J'aime »

Avec cette branche sans electron ça fonctionne !!

J’ai dodoc 10 sur ma machine branché sur Git… c’est déjà un bon premier pas pour tester en local.
Merci !
Je comprend mieux la logique et le fonctionnement : on sélectionne une branche, ça passe sur la version de node qui convient, on lance une installation et hop on peut lancer dodoc.

Il me reste encore à trouver le truc pour electron.
Les prérequis qui sont dans la doc sont bien tous installés, je pense que c’est dans la suite de la compilation d’électron que je me suis embrouillé.

Et ça aussi ça marche :wink:

julien@CM57-DEL12:~/dodocgit/dodoc10$ git pull
Déjà à jour.

C’est ça !

Du coup en regardant le fichier package.json (qui est lu au moment du npm install) tu peux voir l’ensemble des dépendances installées. La différence entre le package.json du dodoc2-next-node et celui du dodoc2-next sont les paquets suivants :

"electron": "19.0.4",
"electron-builder": "^23.6.0",
"electron-rebuild": "^3.2.9",
"node-gyp": "^9.3.0"
"electron-pdf-window": "^1.0.12",
"electron-store": "^8.1.0",
"electron-window-state": "^5.0.3",

Tu peux du coup les installer manuellement pour voir ou ça coince, par exemple

npm install electron@19.0.4

Ça peux permettre de trouver ou ça bloque quand le log du npm install n’est pas clair.

Comment changer de branche ?
Il refuse avec cette commande pour ne pas écraser ce qu’il y a déjà
git checkout dodoc2-next

git reset –hard pour effacer tes modifications (et celles réalisées dans le fichier package-lock.json par un npm install– pas de risques)

Finalement j’ai fait un nouveau dossier pour reprendre sur la branche node

Voici ce que ça donne dans le terminal suite à npm install

julien@CM57-DEL12:~/dodocgit/dodoc10elec$ npm install

> dodoc@10.0.0-dev postinstall
> electron-builder install-app-deps

  • electron-builder  version=23.6.0
  • loaded configuration  file=package.json ("build" field)
  • rebuilding native dependencies  dependencies=canvas@2.10.1, platform-folders@0.6.0, sharp@0.31.1 platform=linux arch=x64
  • install prebuilt binary  name=sharp version=0.31.1 platform=linux arch=x64 napi=
  ⨯ cannot execute  cause=exit status 1
                    errorOut=npm ERR! code 1
    npm ERR! path /home/julien/dodocgit/dodoc10elec/node_modules/canvas
    npm ERR! command failed
    npm ERR! command sh -c node-pre-gyp install --fallback-to-build --update-binary
    npm ERR! make : on entre dans le répertoire « /home/julien/dodocgit/dodoc10elec/node_modules/canvas/build »
    npm ERR!   SOLINK_MODULE(target) Release/obj.target/canvas-postbuild.node
    npm ERR!   COPY Release/canvas-postbuild.node
    npm ERR!   CXX(target) Release/obj.target/canvas/src/backend/Backend.o
    npm ERR!   CXX(target) Release/obj.target/canvas/src/backend/ImageBackend.o
    npm ERR!   CXX(target) Release/obj.target/canvas/src/backend/PdfBackend.o
    npm ERR!   CXX(target) Release/obj.target/canvas/src/backend/SvgBackend.o
    npm ERR!   CXX(target) Release/obj.target/canvas/src/bmp/BMPParser.o
    npm ERR!   CXX(target) Release/obj.target/canvas/src/Backends.o
    npm ERR!   CXX(target) Release/obj.target/canvas/src/Canvas.o
    npm ERR!   CXX(target) Release/obj.target/canvas/src/CanvasGradient.o
    npm ERR!   CXX(target) Release/obj.target/canvas/src/CanvasPattern.o
    npm ERR! make : on quitte le répertoire « /home/julien/dodocgit/dodoc10elec/node_modules/canvas/build »
    npm ERR! Failed to execute '/home/julien/.nvm/versions/node/v16.14.2/bin/node /home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --update-binary --module=/home/julien/dodocgit/dodoc10elec/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/home/julien/dodocgit/dodoc10elec/node_modules/canvas/build/Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v19.0' (1)
    npm ERR! node-pre-gyp info it worked if it ends with ok
    npm ERR! node-pre-gyp info using node-pre-gyp@1.0.9
    npm ERR! node-pre-gyp info using node@16.14.2 | linux | x64
    npm ERR! node-pre-gyp http GET https://github.com/Automattic/node-canvas/releases/download/v2.10.1/canvas-v2.10.1-electron-v19.0-linux-glibc-x64.tar.gz
    npm ERR! node-pre-gyp ERR! install response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.10.1/canvas-v2.10.1-electron-v19.0-linux-glibc-x64.tar.gz 
    npm ERR! node-pre-gyp WARN Pre-built binaries not installable for canvas@2.10.1 and electron@19.0.4 (electron-v19.0 ABI, glibc) (falling back to source compile with node-gyp) 
    npm ERR! node-pre-gyp WARN Hit error response status 404 Not Found on https://github.com/Automattic/node-canvas/releases/download/v2.10.1/canvas-v2.10.1-electron-v19.0-linux-glibc-x64.tar.gz 
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp info using node-gyp@8.4.1
    npm ERR! gyp info using node@16.14.2 | linux | x64
    npm ERR! gyp info ok 
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp info using node-gyp@8.4.1
    npm ERR! gyp info using node@16.14.2 | linux | x64
    npm ERR! gyp info find Python using Python version 3.8.10 found at "/usr/bin/python3"
    npm ERR! gyp info spawn /usr/bin/python3
    npm ERR! gyp info spawn args [
    npm ERR! gyp info spawn args   '/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
    npm ERR! gyp info spawn args   'binding.gyp',
    npm ERR! gyp info spawn args   '-f',
    npm ERR! gyp info spawn args   'make',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/home/julien/dodocgit/dodoc10elec/node_modules/canvas/build/config.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
    npm ERR! gyp info spawn args   '-I',
    npm ERR! gyp info spawn args   '/home/julien/.electron-gyp/19.0.4/include/node/common.gypi',
    npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
    npm ERR! gyp info spawn args   '-Dvisibility=default',
    npm ERR! gyp info spawn args   '-Dnode_root_dir=/home/julien/.electron-gyp/19.0.4',
    npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp',
    npm ERR! gyp info spawn args   '-Dnode_lib_file=/home/julien/.electron-gyp/19.0.4/<(target_arch)/node.lib',
    npm ERR! gyp info spawn args   '-Dmodule_root_dir=/home/julien/dodocgit/dodoc10elec/node_modules/canvas',
    npm ERR! gyp info spawn args   '-Dnode_engine=v8',
    npm ERR! gyp info spawn args   '--depth=.',
    npm ERR! gyp info spawn args   '--no-parallel',
    npm ERR! gyp info spawn args   '--generator-output',
    npm ERR! gyp info spawn args   'build',
    npm ERR! gyp info spawn args   '-Goutput_dir=.'
    npm ERR! gyp info spawn args ]
    npm ERR! gyp info ok 
    npm ERR! gyp info it worked if it ends with ok
    npm ERR! gyp info using node-gyp@8.4.1
    npm ERR! gyp info using node@16.14.2 | linux | x64
    npm ERR! gyp info spawn make
    npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
    npm ERR! In file included from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/backend/Backend.cc:1:
    npm ERR! ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’:
    npm ERR! ../../nan/nan.h:2556:3: warning: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::Local<v8::AccessorSignature>, v8::SideEffectType, v8::SideEffectType)’ is deprecated: Do signature check in accessor [-Wdeprecated-declarations]
    npm ERR!  2556 |   );
    npm ERR!       |   ^
    npm ERR! In file included from /home/julien/.electron-gyp/19.0.4/include/node/v8-function.h:15,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/v8.h:33,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/node.h:63,
    npm ERR!                  from ../../nan/nan.h:60,
    npm ERR!                  from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/backend/Backend.cc:1:
    npm ERR! /home/julien/.electron-gyp/19.0.4/include/node/v8-template.h:838:8: note: declared here
    npm ERR!   838 |   void SetAccessor(
    npm ERR!       |        ^~~~~~~~~~~
    npm ERR! In file included from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/backend/ImageBackend.h:3,
    npm ERR!                  from ../src/backend/ImageBackend.cc:1:
    npm ERR! ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’:
    npm ERR! ../../nan/nan.h:2556:3: warning: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::Local<v8::AccessorSignature>, v8::SideEffectType, v8::SideEffectType)’ is deprecated: Do signature check in accessor [-Wdeprecated-declarations]
    npm ERR!  2556 |   );
    npm ERR!       |   ^
    npm ERR! In file included from /home/julien/.electron-gyp/19.0.4/include/node/v8-function.h:15,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/v8.h:33,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/node.h:63,
    npm ERR!                  from ../../nan/nan.h:60,
    npm ERR!                  from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/backend/ImageBackend.h:3,
    npm ERR!                  from ../src/backend/ImageBackend.cc:1:
    npm ERR! /home/julien/.electron-gyp/19.0.4/include/node/v8-template.h:838:8: note: declared here
    npm ERR!   838 |   void SetAccessor(
    npm ERR!       |        ^~~~~~~~~~~
    npm ERR! In file included from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/backend/PdfBackend.h:3,
    npm ERR!                  from ../src/backend/PdfBackend.cc:1:
    npm ERR! ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’:
    npm ERR! ../../nan/nan.h:2556:3: warning: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::Local<v8::AccessorSignature>, v8::SideEffectType, v8::SideEffectType)’ is deprecated: Do signature check in accessor [-Wdeprecated-declarations]
    npm ERR!  2556 |   );
    npm ERR!       |   ^
    npm ERR! In file included from /home/julien/.electron-gyp/19.0.4/include/node/v8-function.h:15,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/v8.h:33,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/node.h:63,
    npm ERR!                  from ../../nan/nan.h:60,
    npm ERR!                  from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/backend/PdfBackend.h:3,
    npm ERR!                  from ../src/backend/PdfBackend.cc:1:
    npm ERR! /home/julien/.electron-gyp/19.0.4/include/node/v8-template.h:838:8: note: declared here
    npm ERR!   838 |   void SetAccessor(
    npm ERR!       |        ^~~~~~~~~~~
    npm ERR! In file included from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/backend/SvgBackend.h:3,
    npm ERR!                  from ../src/backend/SvgBackend.cc:1:
    npm ERR! ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’:
    npm ERR! ../../nan/nan.h:2556:3: warning: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::Local<v8::AccessorSignature>, v8::SideEffectType, v8::SideEffectType)’ is deprecated: Do signature check in accessor [-Wdeprecated-declarations]
    npm ERR!  2556 |   );
    npm ERR!       |   ^
    npm ERR! In file included from /home/julien/.electron-gyp/19.0.4/include/node/v8-function.h:15,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/v8.h:33,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/node.h:63,
    npm ERR!                  from ../../nan/nan.h:60,
    npm ERR!                  from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/backend/SvgBackend.h:3,
    npm ERR!                  from ../src/backend/SvgBackend.cc:1:
    npm ERR! /home/julien/.electron-gyp/19.0.4/include/node/v8-template.h:838:8: note: declared here
    npm ERR!   838 |   void SetAccessor(
    npm ERR!       |        ^~~~~~~~~~~
    npm ERR! In file included from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/Backends.h:3,
    npm ERR!                  from ../src/Backends.cc:1:
    npm ERR! ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’:
    npm ERR! ../../nan/nan.h:2556:3: warning: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::Local<v8::AccessorSignature>, v8::SideEffectType, v8::SideEffectType)’ is deprecated: Do signature check in accessor [-Wdeprecated-declarations]
    npm ERR!  2556 |   );
    npm ERR!       |   ^
    npm ERR! In file included from /home/julien/.electron-gyp/19.0.4/include/node/v8-function.h:15,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/v8.h:33,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/node.h:63,
    npm ERR!                  from ../../nan/nan.h:60,
    npm ERR!                  from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/Backends.h:3,
    npm ERR!                  from ../src/Backends.cc:1:
    npm ERR! /home/julien/.electron-gyp/19.0.4/include/node/v8-template.h:838:8: note: declared here
    npm ERR!   838 |   void SetAccessor(
    npm ERR!       |        ^~~~~~~~~~~
    npm ERR! In file included from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/Canvas.h:5,
    npm ERR!                  from ../src/Canvas.cc:3:
    npm ERR! ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’:
    npm ERR! ../../nan/nan.h:2556:3: warning: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::Local<v8::AccessorSignature>, v8::SideEffectType, v8::SideEffectType)’ is deprecated: Do signature check in accessor [-Wdeprecated-declarations]
    npm ERR!  2556 |   );
    npm ERR!       |   ^
    npm ERR! In file included from /home/julien/.electron-gyp/19.0.4/include/node/v8-function.h:15,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/v8.h:33,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/node.h:63,
    npm ERR!                  from ../../nan/nan.h:60,
    npm ERR!                  from ../src/backend/Backend.h:6,
    npm ERR!                  from ../src/Canvas.h:5,
    npm ERR!                  from ../src/Canvas.cc:3:
    npm ERR! /home/julien/.electron-gyp/19.0.4/include/node/v8-template.h:838:8: note: declared here
    npm ERR!   838 |   void SetAccessor(
    npm ERR!       |        ^~~~~~~~~~~
    npm ERR! In file included from ../src/CanvasGradient.h:5,
    npm ERR!                  from ../src/CanvasGradient.cc:3:
    npm ERR! ../../nan/nan.h: In function ‘void Nan::SetAccessor(v8::Local<v8::ObjectTemplate>, v8::Local<v8::String>, Nan::GetterCallback, Nan::SetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, Nan::imp::Sig)’:
    npm ERR! ../../nan/nan.h:2556:3: warning: ‘void v8::ObjectTemplate::SetAccessor(v8::Local<v8::Name>, v8::AccessorNameGetterCallback, v8::AccessorNameSetterCallback, v8::Local<v8::Value>, v8::AccessControl, v8::PropertyAttribute, v8::Local<v8::AccessorSignature>, v8::SideEffectType, v8::SideEffectType)’ is deprecated: Do signature check in accessor [-Wdeprecated-declarations]
    npm ERR!  2556 |   );
    npm ERR!       |   ^
    npm ERR! In file included from /home/julien/.electron-gyp/19.0.4/include/node/v8-function.h:15,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/v8.h:33,
    npm ERR!                  from /home/julien/.electron-gyp/19.0.4/include/node/node.h:63,
    npm ERR!                  from ../../nan/nan.h:60,
    npm ERR!                  from ../src/CanvasGradient.h:5,
    npm ERR!                  from ../src/CanvasGradient.cc:3:
    npm ERR! /home/julien/.electron-gyp/19.0.4/include/node/v8-template.h:838:8: note: declared here
    npm ERR!   838 |   void SetAccessor(
    npm ERR!       |        ^~~~~~~~~~~
    npm ERR! In file included from ../src/CanvasPattern.cc:6:
    npm ERR! ../src/Image.h:18:10: fatal error: gif_lib.h: Aucun fichier ou dossier de ce type
    npm ERR!    18 | #include <gif_lib.h>
    npm ERR!       |          ^~~~~~~~~~~
    npm ERR! compilation terminated.
    npm ERR! make: *** [canvas.target.mk:162 : Release/obj.target/canvas/src/CanvasPattern.o] Erreur 1
    npm ERR! gyp ERR! build error 
    npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
    npm ERR! gyp ERR! stack     at ChildProcess.onExit (/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23)
    npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
    npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:291:12)
    npm ERR! gyp ERR! System Linux 5.15.0-60-generic
    npm ERR! gyp ERR! command "/home/julien/.nvm/versions/node/v16.14.2/bin/node" "/home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "build" "--fallback-to-build" "--update-binary" "--module=/home/julien/dodocgit/dodoc10elec/node_modules/canvas/build/Release/canvas.node" "--module_name=canvas" "--module_path=/home/julien/dodocgit/dodoc10elec/node_modules/canvas/build/Release" "--napi_version=8" "--node_abi_napi=napi" "--napi_build_version=0" "--node_napi_label=electron-v19.0"
    npm ERR! gyp ERR! cwd /home/julien/dodocgit/dodoc10elec/node_modules/canvas
    npm ERR! gyp ERR! node -v v16.14.2
    npm ERR! gyp ERR! node-gyp -v v8.4.1
    npm ERR! gyp ERR! not ok 
    npm ERR! node-pre-gyp ERR! build error 
    npm ERR! node-pre-gyp ERR! stack Error: Failed to execute '/home/julien/.nvm/versions/node/v16.14.2/bin/node /home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js build --fallback-to-build --update-binary --module=/home/julien/dodocgit/dodoc10elec/node_modules/canvas/build/Release/canvas.node --module_name=canvas --module_path=/home/julien/dodocgit/dodoc10elec/node_modules/canvas/build/Release --napi_version=8 --node_abi_napi=napi --napi_build_version=0 --node_napi_label=electron-v19.0' (1)
    npm ERR! node-pre-gyp ERR! stack     at ChildProcess.<anonymous> (/home/julien/dodocgit/dodoc10elec/node_modules/@mapbox/node-pre-gyp/lib/util/compile.js:89:23)
    npm ERR! node-pre-gyp ERR! stack     at ChildProcess.emit (node:events:526:28)
    npm ERR! node-pre-gyp ERR! stack     at maybeClose (node:internal/child_process:1092:16)
    npm ERR! node-pre-gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:302:5)
    npm ERR! node-pre-gyp ERR! System Linux 5.15.0-60-generic
    npm ERR! node-pre-gyp ERR! command "/home/julien/.nvm/versions/node/v16.14.2/bin/node" "/home/julien/dodocgit/dodoc10elec/node_modules/.bin/node-pre-gyp" "install" "--fallback-to-build" "--update-binary"
    npm ERR! node-pre-gyp ERR! cwd /home/julien/dodocgit/dodoc10elec/node_modules/canvas
    npm ERR! node-pre-gyp ERR! node -v v16.14.2
    npm ERR! node-pre-gyp ERR! node-pre-gyp -v v1.0.9
    npm ERR! node-pre-gyp ERR! not ok
    
    npm ERR! A complete log of this run can be found in:
    npm ERR!     /home/julien/.npm/_logs/2023-02-16T21_42_27_275Z-debug-0.log
    
                    command=/home/julien/.nvm/versions/node/v16.14.2/bin/node /home/julien/.nvm/versions/node/v16.14.2/lib/node_modules/npm/bin/npm-cli.js rebuild canvas@2.10.1 platform-folders@0.6.0
                    workingDir=
npm ERR! code 1
npm ERR! path /home/julien/dodocgit/dodoc10elec
npm ERR! command failed
npm ERR! command sh -c electron-builder install-app-deps

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/julien/.npm/_logs/2023-02-16T21_42_12_407Z-debug-0.log
julien@CM57-DEL12:~/dodocgit/dodoc10elec$

Ça ressemble fort à des soucis liés à la dépendance canvas (utilisé par stl-thumbnailer et pdf-extractor, qui servent juste à faire les apercus des STL et des PDF).

Soit :

  1. installer sans les dépendances optionnelles (celles-ci dessus) : npm install --no-optional

Puis

  1. installer les dépendances niveau système de canvas : GitHub - Automattic/node-canvas: Node canvas is a Cairo backed Canvas implementation for NodeJS.

Je veux bien que tu me dises le résultat de 1 puis de 2.

Ça marche !

En installant les dépendances optionnelles, juste avec le 1. et en suivant le reste du premier message ça fonctionne.
J’hésite à faire le 2. pas trop envie de tout casser dès la première réussite :wink:

Petite question :
J’ai fait un git pull pour récupérer les dernières modifications, ça a fonctionné. Par contre il faut tout refaire à chaque fois pour reconstruire avec les mises à jour ?

Je vais bientôt être prêt à produire les versions compilées :partying_face:

Edit :
Suite à la commande git pull j’ai refait les différentes étapes et cette fois j’ai bien eu une erreur sur Canvas, j’ai donc fait la partie 2. et j’ai terminé de reconstruire le tout.
Et tout marche avec les dernières modif sur dodoc-next !!!

Quand tu fais npm install, ça télécharge et copie les dépendances extérieurs dans un dossier nommé node_modules. Au pire tu le supprimes et tu refais le 1 ? Si tu compiles des versions de dodoc sans ces dépendances elles ne comporteront pas ces fonctionnalités (aperçu des médias PDF et STL en une image), c’est pas très grave cela dit.

Ça dépend du code qui a été changé : s’ils comportent des modifications dans les dépendances (fichier package.json) alors oui, il faut relancer un npm install. Par sécurité, je ferai un npm install dans le dossier principal si j’étais toi.
Pour le dossier /client, si modif il y a alors il faut obligatoirement reconstruire les fichiers JS : npm install, npm run build. Sauf sur la branche dodoc2-next-node, ou je commit les fichiers compilés (sous-dossier /client/dist/) pour simplifier le déploiement sur des serveurs en ligne.

Ha ben je viens de voir ton edit, super ! Donc il faut bien installer les dépendances de canvas, ça marche.

J’ai mis à jour le tuto, étape 8, pour indiquer qu’il faut télécharger les dépendances pour node-canvas.

Bonjour @louis content de te revoir içi :slightly_smiling_face: , a priori je fais juste un git pull ou il faut tout reprendre depuis le début ?

git pull + npm install
et hop !

Pas besoin d’un nvm use entre les deux ?

nvm use c’est pour adapter la version de node au dossier ou tu te trouves, en passant d’une v9 à une v10 par exemple dans le même terminal. Ici toutes les versions de dodoc 10 utilisent la version 16.14.2 de node, donc si tu ne fais que mettre à jour une v10 normalement tu es déjà sur la bonne version de node !