Подтвердить что ты не робот

"недопустимый заголовок ELF" при использовании модуля nodejs "ref" на AWS Lambda

Я только что загрузил zip в AWS Lambda, который включал "ref" (https://www.npmjs.com/package/ref), который необходим для проверки Идентификатор аутентификации iOS Game Center (Как проверить подлинность Игрового Центра пользователя с стороннего сервера node.js).

К сожалению, при вызове он приводит к ошибке "недопустимый заголовок 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, работающем на Yosemite, у которого нет проблем с локальным использованием кода. Поиск в google для "недопустимого заголовка ELF" мало что дал для получения соответствующих результатов, и я действительно не уверен, куда идти отсюда. Будет ли я лучше спрашивать об этом в области node.js, или это соответствующая область, потому что это может быть проблемой с платформой?

4b9b3361

Ответ 1

Это происходит, когда вы строите на одной архитектуре, а затем пытаетесь использовать один и тот же встроенный аддон в другой архитектуре (или в некоторых случаях в некоторых случаях).

В соответствии с этой страницей аддоны могут быть скомпилированы против образа Amazon Linux на EC2, чтобы скомпилированные аддоны могли использоваться на их службе Lambda.

Ответ 2

Это не относится точно к вашему вопросу, но если кто-то наткнется на это при использовании AWS Elastic Beanstalk, это может быть результатом загрузки каталога node_modules/ вместе со всем остальным, поэтому вам нужно заставить его игнорировать файл.

.ebignore

node_modules/