2015-11-04 9 views
8

Vor einiger Zeit habe ich NodeJS (v0.10.31) installiert und an einem Projekt ohne Probleme gearbeitet, aber erst kürzlich habe ich mich entschieden, auf Node v5.0.0 zu aktualisieren. Alles war in Ordnung, bis ich mich entschied, bcrypt und db-migrate zu verwenden. Aufruf der Befehl npm installiert fehlschlagen würde eine lange Liste von Details spuckt aber keine klaren Informationen über das Problem:NodeJS 4 & 5 npm install fail für bcrypt und db-migrate

$ 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  

Es scheint nicht, alle Infos im Web über den Fehler zu sein, und mit NodeJS V4. XX half auch nicht.

Mein Setup:

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

Antwort

20

Nach vielen Google-Suche, wies darauf hin, dass jemand für NodeJS V4 (und neuere Versionen) wird eine neuere Version von GCC benötigt (4.8 denke ich).

Meine aktuelle Version war ein 4.6.3 wie Sie sehen können:

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

Also alles, es dauerte es wurde zu aktualisieren, und konnte es mit Hilfe dieser Links tun:

How to install Gcc 4.8

How do I use the latest GCC 4.9 on Ubuntu 14.04

Die Reihenfolge der Befehle, die ich war am Ende mit:

$ 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 

Überprüfung erneut die GCC-Version

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

Danach konnte ich rufen ‚npm ​​installieren‘ und es ging einwandfrei auf.

+0

Es funktionierte für mich auch :) –

+0

@MohitSoni Yay = D Ich bin froh, dass es – cavpollo

+0

Vielen Dank für die Buchung gemacht haben. Upgrade auf V5 auf Ubuntu und hatte das gleiche Problem. Das hat wie ein Zauber funktioniert. –

3

Diese einzige Zeile Update für mich gearbeitet. Konnten Sie die Antwort von diesem Link https://github.com/ncb000gt/node.bcrypt.js/issues/351

sudo apt-get install build-essential 

Then install bcrypt: 

npm install bcrypt 
+1

Dieses Paket aktualisiert gcc. Das könnte der Grund sein, warum es funktioniert – yuji