在Ubuntu服务器上部署时,节点应用程序错误

时间:2019-02-18 16:09:13

标签: node.js deployment server ubuntu-14.04 elf

我一直在使用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)

有人可以帮助我了解我做错了什么吗?

1 个答案:

答案 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。

相关问题