У меня есть бэкэнд-сервер с nodejs, развернутый на heroku.
Проблема в том, что мне нужно использовать некоторую программу на фортране с dll-файлом (существует как 64-битная, так и 32-битная версия, и используется 64-немного).
Чтобы обработать их все, я написал некоторый код C ++ (node-addon-api).
C ++ с компоновкой node-gyp в файл .node, и он работал в моем локальномenvironment.
Однако на heroku не получилось со следующими ошибками.
Error: /app/refprop/refpropNapi.node: invalid ELF header
И я нашел объяснение по поводу ошибки заголовка ELF. После некоторых поисков я нашел ответ ниже, и он, кажется, точно соответствует моему случаю.
Это происходит, когда вы строите одну архитектуру, а затем пытаетесь использовать одно и то же встроенное дополнение в другой архитектуре (или платформе). в некоторых случаях.
Моей средой разработки для node-addon-api была 64-разрядная Windows 10. Я предполагаю, что heroku использует ОС Linux, и поэтому скомпилированный файл узла не работает.
В заключение у меня есть 3 вопроса.
Будет ли компиляция C ++ и dll на Docker (я не знаю, как встроить Docker подробно) создаст узел, который можетбыть запущенным на heroku?
НЕОБХОДИМО ли докеризовать и бэкэнд, и node-addon-api, чтобы убедиться, что они работают в одной ОС?
Кажется, что развертывание с использованием Docker делает IaaS намного проще, что заставляет меня избегать PaaS (heroku), но у меня нет никакого опыта. Это будет способ убежать от heroku? (Я не хочу работать ссервера больше, потому чтоУ меня сейчас достаточно работы ...)