Недопустимые двоичные пакеты AWS Elastic Beanstalk - PullRequest
0 голосов
/ 23 апреля 2019

Я работаю над переносом проекта из Heroku в AWS.После развертывания я получаю сообщение об ошибке: «неверный заголовок ELF».Я обнаружил сообщения с похожими проблемами при использовании AWS Lambda, но я не понимаю, почему у меня возникла проблема с бинарными пакетами в Elastic Beanstalk.

Разве Elastic Beanstalk не предоставляет настроенную среду для запуска моего кода аналогичнов докер?Я чувствую, что эта проблема должна быть более сложной, поскольку я не могу найти кого-либо еще с этой проблемой в Elastic Beanstalk.

Вот точная ошибка, которую я получаю:

Error: /var/app/current/node_modules/bcrypt/lib/binding/bcrypt_lib.node: invalid ELF header
at Object.Module._extensions..node (internal/modules/cjs/loader.js:730:18)
at Module.load (internal/modules/cjs/loader.js:600:32)
at tryModuleLoad (internal/modules/cjs/loader.js:539:12)
at Function.Module._load (internal/modules/cjs/loader.js:531:3)
at Module.require (internal/modules/cjs/loader.js:637:17)
at require (internal/modules/cjs/helpers.js:22:18)
at Object.<anonymous> (/var/app/current/node_modules/bcrypt/bcrypt.js:6:16)
at Module._compile (internal/modules/cjs/loader.js:701:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:712:10)
at Module.load (internal/modules/cjs/loader.js:600:32)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! beer@0.1.0 start: `node server/server.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the beer@0.1.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /tmp/.npm/_logs/2019-04-15T00_54_06_983Z-debug.log

Я работаю надMac, мой код содержит как клиентский, так и серверный код, написанный на React, node.js и SQL.Я загружаю свой код через ZIP-файл, содержащий несколько папок, включая node_modules/.

1 Ответ

1 голос
/ 23 апреля 2019

Некоторые библиотеки чувствительны к операционной системе и / или архитектуре процессора, на которой они построены. Это особенно верно для модулей, реализованных на низкоуровневых языках или связанных с системными библиотеками. В этом случае вы, похоже, используете bcrypt, что в основном написано на C ++ .

Это одна из причин того, что zip-файл, который вы загружаете в Elastic Beanstalk, не должен включать вашу папку node_modules/ (или что-либо еще, что Git игнорирует). Самый простой способ создать почтовый индекс для загрузки в Elastic Beanstalk - это , вероятно, использовать git archive:

 git archive -v -o myapp.zip --format=zip HEAD

Это будет учитывать ваши игнорирования, в то время как zip вручную будет включать их.

Ваш архив должен содержать package.json и package-lock.json в своем корне. Elastic Beanstalk установит свои собственные node_modules/ из этих файлов , если они присутствуют. Это должно гарантировать, что все библиотеки совместимы с его операционной системой.

...