web-dev-qa-db-ja.com

AWS Lambdaでnodejs "ref"モジュールを使用する場合の「無効なELFヘッダー」

IOS Game Center認証トークンを検証するために必要な「ref」( https://www.npmjs.com/package/ref )を含むZipをAWS Lambdaにアップロードしました。 ( サードパーティのnode.jsサーバーからGame Centerユーザーを認証する方法 )。

残念ながら、それを呼び出すと「無効なELFヘッダー」エラーが発生します。

{
  "errorMessage": "/var/task/node_modules/ref/build/Release/binding.node: invalid ELF header",
  "errorType": "Error",
  "stackTrace": [
    "Module.load (module.js:356:32)",
    "Function.Module._load (module.js:312:12)",
    "Module.require (module.js:364:17)",
    "require (module.js:380:17)",
    "bindings (/var/task/node_modules/ref/node_modules/bindings/bindings.js:76:44)",
    "Object.<anonymous> (/var/task/node_modules/ref/lib/ref.js:5:47)",
    "Module._compile (module.js:456:26)",
    "Object.Module._extensions..js (module.js:474:10)",
    "Module.load (module.js:356:32)",
    "Function.Module._load (module.js:312:12)"
  ]
}

これは、ヨセミテを実行している64ビットMacbook Proで開発されており、コードをローカルで実行しても問題ありません。 「無効なELFヘッダー」を探し回っては、関連する結果を知るための情報がほとんど得られなかったので、ここからどこに進むべきか本当にわかりません。 node.jsエリアでこれを尋ねる方がいいでしょうか、それともプラットフォームに問題がある可能性があるため、これは関連するエリアですか?

24
seaders

これは、あるアーキテクチャでビルドしてから、同じアーキテクチャのアドオンを別のアーキテクチャ(または場合によってはプラットフォーム)で使用しようとすると発生します。

このページ によると、コンパイルされたアドオンをLambdaサービスで使用するには、EC2のAmazon Linuxイメージに対してアドオンをコンパイルする必要がある場合があります。

46
mscdex

これはあなたの質問にはまったく当てはまりませんが、AWS Elastic Beanstalkを使用しているときに誰かがこれに出くわした場合は、node_modules/ディレクトリを他のすべてと一緒に使用するため、ファイルを無視するように強制する必要があります。

.ebignore

node_modules/
0
Matt Fletcher