2013-04-04 15 views
52

私は学校のnodejsプロジェクトに取り組んでいます。 ncpmでbcryptをインストールできませんでしたので、bcrypt-nodejsをインストールしました。プロジェクトは昨日正常に機能しました。私は、LinuxのUbuntu 10.04 LTS Iによノードのアプリケーション実行時に無効なelfヘッダーがあります

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

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

私のpackage.jsonファイルは次のようになります。私は、 "ノードアプリ" を行う際 しかし、今日は、私はこのエラーを持っています成功なしでgoogleで解決策を見つけようとしました... 誰かが私を助けることができますか?

+0

ソリューションを見つけましたか? – MrYoshiji

+0

はい、私はubuntu 12.04をインストールし、私はbcryptをインストールして使用することができました。 私の問題に関心をお寄せいただきありがとうございます。 – user2244469

答えて

98

私は、OSXでコンパイルされたbcryptはLinuxではうまく動作しないことがわかりました。つまり、ローカルのOSXワークステーションでコンパイルされたbcryptをチェックインし、Linuxサーバでノードアプリケーションを実行しようとすると、上記のエラーが表示されます。

解決方法:npm install bcrypt Linuxの場合は、解決してください。

これに対処する最も良い方法は、おそらく.gitignore ...とnpm installのnode_modulesをリモートから除外することです。

+1

これは、それらが異なるオペレーティングシステムであり、おそらく異なる基礎となるプロセッサアーキテクチャであるからです。私が大学にいたときには、2つのUNIXクラスタがありました.1つはVAX上でもう1つはAlpha上で実行されていました。 CSプロジェクトは教授が使用したのでVAXでコンパイルされていました... – tkone

+0

@tkoneもちろん、npmモジュールはクロスコンパイルします:バイナリコンポーネントを使って何かをインストールすると、Mach(OS X)、ELF(Linux)、 PXE(Windows)バイナリ。 – mikemaccana

+1

問題点は、bcryptは他のノードモジュールと異なり、単一のOSバイナリのみをインストールすることです。したがって、Linuxにインストールされたbcryptをコミットすると、node_modules/bcrypt/build/Release/bcrypt_lib.nodeがLinuxバイナリになっているので、Macデベロッパシステム**が壊れてしまいます。テストするには 'file/Users/mikemaccana/Documents/sandpitlab/waves/node_modules/bcrypt/build/Release/bcrypt_lib.node'を実行してください。 – mikemaccana

関連する問題