2013-04-04 19 views
52

Ich arbeite an einem Nodejs-Projekt für die Schule. Ich konnte bcrypt nicht mit npm installieren, also habe ich bcrypt-nodejs installiert und das Projekt hat gestern gut funktioniert. Aber heute, wenn ich einen "Knoten app" habe ich diesen Fehler:bcrypt ungültiger Elf Header beim Ausführen von Knoten App

/.../node_modules/bcrypt/node_modules/bindings/bindings.js:79 
     throw e 
      ^
Error: /.../node_modules/bcrypt/build/Release/bcrypt_lib.node: invalid ELF header 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 
    at bindings (/.../node_modules/bcrypt/node_modules/bindings/bindings.js:74:15) 
    at Object.<anonymous> (/.../node_modules/bcrypt/bcrypt.js:1:97) 
    at Module._compile (module.js:456:26) 
    at Object.Module._extensions..js (module.js:474:10) 
    at Module.load (module.js:356:32) 
    at Function.Module._load (module.js:312:12) 
    at Module.require (module.js:364:17) 
    at require (module.js:380:17) 

meine package.json Datei wie folgt aussieht:

{ 
    "name": "Supinfarm", 
    "version": "0.0.0", 
    "env": { 
       "PYTHON": "/usr/bin/python2.6" 
     }, 
    "dependencies": { 
    "express": "3.1.0", 
    "connect-flash": "*", 
    "jade": "*", 
    "stylus": "*", 
    "passport": "*", 
    "passport-local": "*", 
    "mongoose": "*", 
    "bcrypt": "*" 
    } 
} 

ich auf Linux bin Ubuntu 10.04 LTS I habe versucht, eine lösung bei google ohne erfolg zu finden ... Kann mir jemand helfen?

+0

Haben Sie eine Lösung gefunden? – MrYoshiji

+0

Ja, ich habe ubuntu 12.04 installiert und konnte bcrypt installieren und verwenden. danke für Ihr Interesse an meinem Problem. – user2244469

Antwort

98

Ich habe festgestellt, dass bcrypt kompiliert auf OSX wird nicht ganz unter Linux arbeiten. Mit anderen Worten, wenn Sie das auf Ihrer lokalen OSX-Workstation kompilierte bcrypt einchecken und versuchen, die Knoten-App auf Ihren Linux-Servern auszuführen, wird der obige Fehler angezeigt.

Lösung: npm install bcrypt auf Linux, überprüfen Sie, dass in, gelöst.

Wahrscheinlich die beste Möglichkeit, damit umzugehen, schließen Sie Ihre node_module in .gitignore ... und npm Installation entfernt aus.

+1

Das liegt daran, dass es sich um verschiedene Betriebssysteme und möglicherweise um verschiedene zugrunde liegende Prozessorarchitekturen handelt. Als ich auf dem College war, hatten wir zwei UNIX-Cluster: Der eine lief auf einer VAX, der andere auf einer Alpha. CS-Projekte mussten auf der VAX kompiliert werden, da das der Professor benutzt hat ... – tkone

+0

@tkone Sicher, aber npm Module kompilieren: die Installation von etwas mit einer binären Komponente gibt Ihnen einen Mach (OS X), ELF (Linux) und PXE (Windows) binär. – mikemaccana

+1

Das einzige Problem ist: bcrypt, im Gegensatz zu anderen Knoten-Modulen, installiert nur eine einzige OS-Binärdatei. Wenn Sie also ein Linux-installiertes bcrypt verwerfen, werden Ihre Mac-Entwickler-Systeme ** beschädigt, da node_modules/bcrypt/build/Release/bcrypt_lib.node jetzt eine Linux-Binärdatei ist. Führen Sie 'file/Users/mikemaccana/Dokumente/sandpitlab/waves/node_modules/bcrypt/build/Release/bcrypt_lib.node' aus, um zu testen. – mikemaccana