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?
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.
Bcrypt is 1.8 times faster than bcryptjs in generating hash passwords and 1.8 times faster in comparing function.
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With