Ошибка приложения узла при развертывании на сервере Ubuntu - PullRequest
0 голосов
/ 18 февраля 2019

Я занимаюсь разработкой веб-сайта с использованием NodeJS, Express и MongoDB.Сайт работает нормально, когда я запускаю его на своей локальной машине.Однако, когда я пытаюсь развернуть его, запустив node app.js на экземпляре сервера Ubuntu (размещенном на Vultr), я получаю следующую ошибку:

/home/appuser/UMISC_Website/node_modules/bindings/bindings.js:119
        throw e;
        ^

Error: /home/appuser/UMISC_Website/node_modules/node-expat/build/Release/node_expat.node: invalid ELF header
    at Object.Module._extensions..node (internal/modules/cjs/loader.js:779:18)
    at Module.load (internal/modules/cjs/loader.js:630:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
    at Function.Module._load (internal/modules/cjs/loader.js:562:3)
    at Module.require (internal/modules/cjs/loader.js:667:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at bindings (/home/appuser/UMISC_Website/node_modules/bindings/bindings.js:112:48)
    at Object.<anonymous> (/home/appuser/UMISC_Website/node_modules/node-expat/lib/node-expat.js:4:32)
    at Module._compile (internal/modules/cjs/loader.js:738:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:749:10)
    at Module.load (internal/modules/cjs/loader.js:630:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
    at Function.Module._load (internal/modules/cjs/loader.js:562:3)
    at Module.require (internal/modules/cjs/loader.js:667:17)
    at require (internal/modules/cjs/helpers.js:20:18)
    at Object.<anonymous> (/home/appuser/UMISC_Website/node_modules/xml2json/lib/xml2json.js:1:75)

Может кто-нибудь помочь мне понять, что я сделалнеправильно?

1 Ответ

0 голосов
/ 18 февраля 2019

Сайт работает нормально, когда я запускаю его на своей локальной машине.Однако, когда я пытаюсь развернуть его, запустив узел app.js на экземпляре сервера Ubuntu (размещенном на Vultr), я получаю следующую ошибку: .../node_expat.node: invalid ELF header

Похоже, что экземпляр серверас использованием 32-разрядного ядра, и вы попытались развернуть в нем 64-разрядный двоичный файл node_expat.node.

Обновление:

file -L /home/appuser/UMISC_Website/node_modules/node-expat/build/Release/node_expat.node
Mach-O 64-bit x86_64 bundle

Мое предположение было близко: вы развернули 64-битный бинарный файл MacOS для Linux.

Linux не понимает / не может работатьДвоичные файлы MacOS, так что не делайте этого.Вы должны заменить NodeJS на тот, который создан для вашей целевой ОС (то есть для версии Linux x86_64).

...