2013-04-04 12 views
52

Pracuję nad projektem nodejs dla szkoły. Nie udało mi się zainstalować bcrypt z npm, więc zainstalowałem bcrypt-nodejs i projekt działał dobrze wczoraj. dzisiaj Ale kiedy zrobić "aplikacji węzła" mam ten błąd:bcrypt nieważny nagłówek elfa podczas uruchamiania aplikacji węzła

/.../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) 

mój plik package.json wygląda tak:

{ 
    "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": "*" 
    } 
} 

jestem na Linux Ubuntu 10.04 LTS I "Próbowałem znaleźć rozwiązanie w google bez powodzenia ... Czy ktoś może mi pomóc?

+0

Czy znalazłeś rozwiązanie? – MrYoshiji

+0

tak, zainstalowałem Ubuntu 12.04 i byłem w stanie zainstalować i używać bcrypt. dziękuję za zainteresowanie moim problemem. – user2244469

Odpowiedz

98

Znalazłem, że bcrypt skompilowany na OSX nie będzie działał na Linuksie. Innymi słowy, jeśli sprawdzisz bcrypt skompilowany na lokalnej stacji roboczej OSX i spróbujesz uruchomić aplikację węzła na serwerach Linux, zobaczysz powyższy błąd.

Rozwiązanie: npm install bcrypt w systemie Linux, sprawdź to, rozwiązane.

Prawdopodobnie najlepszym sposobem radzenia sobie z tym jest wykluczenie twojego node_modules w .gitignore ... i npm instalować zdalnie.

+1

Dzieje się tak dlatego, że są to różne systemy operacyjne i całkiem możliwe różne architektury procesorów. Kiedy byłem na studiach, mieliśmy dwa klastry UNIX: jeden działający na VAX, drugi na Alphie. Projekty CS zostały skompilowane na VAX, ponieważ to właśnie użył profesor ... – tkone

+0

@tkone Oczywiście, ale cross-compile modułów npm: instalowanie somthing ze składnikiem binarnym daje Mach (OS X), ELF (Linux) i Binarny PXE (Windows). – mikemaccana

+1

Jedynym problemem jest: bcrypt, w przeciwieństwie do innych modułów węzła, instaluje tylko jeden plik binarny systemu operacyjnego. Więc ** popełnienie zainstalowanego w systemie Linux bcrypt złamie systemy programistyczne Mac **, ponieważ node_modules/bcrypt/build/Release/bcrypt_lib.node jest teraz binarnym systemem Linux. Uruchom plik 'file/Users/mikemaccana/Documents/sandpitlab/waves/node_modules/bcrypt/build/Release/bcrypt_lib.node', aby przetestować. – mikemaccana

Powiązane problemy