最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

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

IT培训 admin 2浏览 0评论

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

我一直在使用NodeJS,Express和MongoDB开发一个网站。当我在本地机器上运行时,该网站运行正常。但是,当我尝试通过在Ubuntu服务器实例(由Vultr托管)上运行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)

有人可以帮我理解我做错了吗?

回答如下:

当我在本地机器上运行时,该网站运行正常。但是,当我尝试通过在Ubuntu服务器实例(由Vultr托管)上运行节点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二进制文件,所以不要这样做。您必须将NodeJS替换为为目标操作系统构建的NodeJS(即Linux x86_64版本)。

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

我一直在使用NodeJS,Express和MongoDB开发一个网站。当我在本地机器上运行时,该网站运行正常。但是,当我尝试通过在Ubuntu服务器实例(由Vultr托管)上运行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)

有人可以帮我理解我做错了吗?

回答如下:

当我在本地机器上运行时,该网站运行正常。但是,当我尝试通过在Ubuntu服务器实例(由Vultr托管)上运行节点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二进制文件,所以不要这样做。您必须将NodeJS替换为为目标操作系统构建的NodeJS(即Linux x86_64版本)。

发布评论

评论列表 (0)

  1. 暂无评论