我一直在使用NodeJS,Express和MongoDB开发一个网站。当我在本地计算机上运行该网站时,该网站运行正常。但是,当我尝试通过在由Vultr托管的Ubuntu服务器实例上运行node app.js
来部署它时,出现以下错误:
/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)
有人可以帮助我了解我做错了什么吗?
答案 0 :(得分:0)
当我在本地计算机上运行该网站时,它运行良好。但是,当我尝试通过在由Vultr托管的Ubuntu服务器实例上运行node app.js进行部署时,出现以下错误:
.../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
我的猜测已经接近:您已经在Linux上部署了64位MacOS二进制文件。
Linux无法理解/无法运行MacOS二进制文件,因此请勿这样做。您必须用为目标操作系统(即Linux x86_64版本)构建的NodeJS替换NodeJS。