Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

bcrypt invalid elf header when running node app

I'm working on a nodejs project for school. I wasn't able to install bcrypt with npm so i installed bcrypt-nodejs and the project worked fine yesterday. But today, when I do a "node app" i have this error :

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

my package.json file looks like this:

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

I'm on Linux ubuntu 10.04 LTS I've tried to find a solution on google without success... Can somebody help me?

like image 473
user2244469 Avatar asked Apr 04 '13 11:04

user2244469


People also ask

How do I fix invalid ELF headers?

If you extracted the installer folder on a different OS, then moved it to a Linux machine, the symbolic links will not be created during the installation resulting in an "Invalid ELF header" error. The resolution is to move the installer zip file over to the Linux machine and then unzip the installer on that OS.

Should I use Bcrypt or Bcryptjs?

Bcrypt is 1.8 times faster than bcryptjs in generating hash passwords and 1.8 times faster in comparing function.


2 Answers

I've found that bcrypt compiled on OSX will not quite work on Linux. In other words, if you check in the bcrypt compiled on your local OSX workstation, and try to run the node app on your linux servers, you will see the error above.

Solution: npm install bcrypt on Linux, check that in, solved.

Probably the best way to deal with this is exclude your node_modules in .gitignore... and npm install remotely.

like image 51
Cmag Avatar answered Sep 22 '22 09:09

Cmag


If you are running inside a docker container as I am, all you need is a .dockerignore with 'node_modules' specified in it.

Some libraries need to be compiled on the host machine and therefore your modules can be stale.

like image 27
TacoEater Avatar answered Sep 19 '22 09:09

TacoEater