L’installation de NodeJS 4 et 5 npm échoue pour bcrypt et db-migrate

Il y a quelque temps, j’ai installé NodeJS (v0.10.31) et travaillé sur un projet sans problème, mais récemment j’ai décidé de mettre à jour vers Node v5.0.0. Tout allait bien jusqu’à ce que je décide d’utiliser bcrypt et db-migrate. L’appel de la commande npm install échouerait à cracher une longue liste de détails, mais aucune information claire sur le problème:

$ sudo npm install > [email protected] install /home/cavpollo/intuitiva/cirio/cirio-id/node_modules/bcrypt > node-gyp rebuild make: Entering directory `/home/cavpollo/intuitiva/cirio/cirio-id/node_modules/bcrypt/build' CXX(target) Release/obj.target/bcrypt_lib/src/blowfish.o CXX(target) Release/obj.target/bcrypt_lib/src/bcrypt.o CXX(target) Release/obj.target/bcrypt_lib/bcrypt_node/src.o In file included from /home/cavpollo/.node-gyp/5.0.0/include/node/node.h:42:0, from ../node_modules/nan/nan.h:24, from ../src/bcrypt_node.cc:1: /home/cavpollo/.node-gyp/5.0.0/include/node/v8.h:336:1: error: expected unqualified-id before 'using' /home/cavpollo/.node-gyp/5.0.0/include/node/v8.h:469:1: error: expected unqualified-id before 'using' /home/cavpollo/.node-gyp/5.0.0/include/node/v8.h:856:1: error: expected unqualified-id before 'using' In file included from ../node_modules/nan/nan.h:184:0, from ../src/bcrypt_node.cc:1: ../node_modules/nan/nan_maybe_43_inl.h:13:1: error: expected unqualified-id before 'using' ../node_modules/nan/nan_maybe_43_inl.h:16:1: error: expected unqualified-id before 'using' ../node_modules/nan/nan_maybe_43_inl.h:19:12: error: 'Maybe' does not name a type ../node_modules/nan/nan_maybe_43_inl.h:24:12: error: 'Maybe' does not name a type ../node_modules/nan/nan_maybe_43_inl.h:31:1: error: 'MaybeLocal' does not name a type ... [about 100 lines of log errors] ... ../node_modules/nan/nan_new.h:36:1: warning: control reaches end of non-void function [-Wreturn-type] make: *** [Release/obj.target/bcrypt_lib/src/bcrypt_node.o] Error 1 make: Leaving directory `/home/cavpollo/intuitiva/cirio/cirio-id/node_modules/bcrypt/build' gyp ERR! build error gyp ERR! stack Error: `make` failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23) gyp ERR! stack at emitTwo (events.js:87:13) gyp ERR! stack at ChildProcess.emit (events.js:172:7) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12) gyp ERR! System Linux 3.2.0-37-generic-pae gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/cavpollo/intuitiva/cirio/cirio-id/node_modules/bcrypt gyp ERR! node -v v5.0.0 gyp ERR! node-gyp -v v3.0.3 gyp ERR! not ok npm ERR! Linux 3.2.0-37-generic-pae npm ERR! argv "/usr/local/bin/node" "/usr/local/bin/npm" "install" npm ERR! node v5.0.0 npm ERR! npm v3.3.10 npm ERR! code ELIFECYCLE npm ERR! [email protected] install: `node-gyp rebuild` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the [email protected] install script 'node-gyp rebuild'. npm ERR! Make sure you have the latest version of node.js and npm installed. npm ERR! If you do, this is most likely a problem with the bcrypt package, npm ERR! not with npm itself. npm ERR! Tell the author that this fails on your system: npm ERR! node-gyp rebuild npm ERR! You can get their info via: npm ERR! npm owner ls bcrypt npm ERR! There is likely additional logging output above. npm ERR! Please include the following file with any support request: npm ERR! /home/cavpollo/intuitiva/cirio/cirio-id/npm-debug.log 

Il ne semble pas y avoir d’informations sur le Web concernant l’erreur, et l’utilisation de NodeJS V4.XX n’a pas aidé non plus.

Ma configuration:

  • Ubuntu 12.04
  • noeud v5.0.0
  • npm v3.3.10

Après de nombreuses recherches sur Google, quelqu’un a fait remarquer que pour NodeJS V4 (et les versions plus récentes), une nouvelle version de GCC était nécessaire (4,8, je pense).

Ma version actuelle était un 4.6.3 comme vous pouvez le voir:

 $ gcc --version gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 

Il suffisait donc de le mettre à jour et de le faire grâce à ces liens:

Comment installer Gcc 4.8

Comment utiliser le dernier GCC 4.9 sur Ubuntu 14.04

La séquence de commandes que j’ai fini par utiliser était:

 $ sudo apt-get install python-software-properties $ sudo add-apt-repository ppa:ubuntu-toolchain-r/test $ sudo apt-get update $ sudo apt-get install gcc-4.8 g++-4.8 $ sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 60 --slave /usr/bin/g++ g++ /usr/bin/g++-4.8 

Vérifier à nouveau la version du GCC

 $ gcc --version gcc (Ubuntu 4.8.1-2ubuntu1~12.04) 4.8.1 

Après cela, j’ai pu appeler “npm install” et tout s’est bien passé.

Cette seule ligne de mise à jour a fonctionné pour moi. J’ai trouvé la réponse à partir de ce lien https://github.com/ncb000gt/node.bcrypt.js/issues/351

 sudo apt-get install build-essential Then install bcrypt: npm install bcrypt 

A travaillé un régal merci

Mise à jour de NodeJS de la version v0.12.6 à la version 5.0.0 http://simon.fearby.com/blog/?p=2246