由bcrypt引起的ELF标头无效

时间:2015-04-08 20:36:48

标签: node.js ubuntu meteor

我遵循了这个解决方案:

bcrypt is breaking my meteor application, how do I fix it?

但我仍然得到这个错误:

    /home/kaleobox/bundle/programs/server/node_modules/fibers/future.js:245
                                                    throw(ex);
                                                          ^
    Error: /home/kaleobox/bundle/programs/server/npm/npm-bcrypt/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 (/home/kaleobox/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/node_modules/bindings/bindings.js:74:15)
        at Object.<anonymous> (/home/kaleobox/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/bcrypt.js:3:35)
        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)

我进入/home/kaleobox/bundle/programs/server/node_modules并做了:

rm -R /home/kaleobox/bundle/programs/server/node_modules/bcrypt

然后

npm install bcrypt

但上述错误仍然存​​在。这条线

/home/kaleobox/bundle/programs/server/npm/npm-bcrypt/node_modules/bcrypt/build/Release/bcrypt_lib.node: invalid ELF header

告诉我,我可能要在第二个位置删除并重新安装bcrypt?

3 个答案:

答案 0 :(得分:4)

您应该从

重新安装bcrypt
  

/家庭/ kaleobox /束/方案/服务器/ NPM / NPM-bcrypt /节点模块

而不是

  

/家庭/ kaleobox /束/方案/服务器/ node_modules

答案 1 :(得分:1)

我通过在以下目录中重新安装bcrypt软件包解决了这个问题:

  • 访问此目录:

    /my_app/programs/server/npm/npm-bcrypt/

  • 然后运行npm install bcrypt

  • 再次启动您的应用。应该没问题。 :)

答案 2 :(得分:0)

正如@ lingxiao-sun的回答所示,您可能发现将bcrypt /home/kaleobox/bundle/programs/server/node_modules复制到/home/kaleobox/bundle/programs/server/npm/npm-bcrypt/node-modules将解决此问题。

这可能是因为bcrypt中的<your project>/bundle/programs/server/node_modules将在本地构建/安装到主机,而bcrypt中的/server/npm/npm-bcrypt/node-modules/可能来自某个来源/ build machine,如果这些环境不同,可能会因每个环境所需的特定二进制文件而导致问题。