问题
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?
回答1:
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.
回答2:
I was also facing the same issue with bcrypt v.1.0.3. Just updated to the latest version (3.0.1) and its working fine now
Run
npm install bcrypt@latest --save
回答3:
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.
回答4:
For those deploying an app to AWS elastic beanstalk, and gonna install bcrypt on the server, include in a post deploy hook in .ebextensions/01_build.config
:
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99_build_app.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
cd /var/app/current/
rm -rf node_modules/bcrypt
sudo /opt/elasticbeanstalk/node-install/node-v10.13.0-linux-x64/bin/npm install bcrypt@latest
来源:https://stackoverflow.com/questions/15809611/bcrypt-invalid-elf-header-when-running-node-app