我有一个nodejs(expressjs)应用程序在本地运行正常但是当我将它部署到Openshift时,我检查日志文件时出现异常,当它在server.js中包含此行时出现以下错误。
var mongojs = require("mongojs");

DEBUG: Sending SIGTERM to child...
DEBUG: Running node-supervisor with
DEBUG: program 'server.js'
DEBUG: --watch '/var/lib/openshift/5522627bfcf9336fbc00016a/app-root/data/.nodewatch'
DEBUG: --ignore 'undefined'
DEBUG: --extensions 'node|js|coffee'
DEBUG: --exec 'node'
DEBUG: Starting child process with 'node server.js'
DEBUG: Watching directory '/var/lib/openshift/5522627bfcf9336fbc00016a/app-root/data/.nodewatch' for changes.
[Error: /var/lib/openshift/5522627bfcf9336fbc00016a/app-root/runtime/repo/node_modules/mongojs/node_modules/mongodb/node_modules/bson/build/Release/bson.node: wrong ELF class: ELFCLASS32]
js-bson: Failed to load c++ bson extension, using pure JS version
App is running on port : 3000

答案 0 :(得分:2)
看起来您的bson或mongodb是为32位系统构建的,但您正尝试将其加载到64位系统(或其他一些架构)上。
我想你有一个32位系统,你也在部署构建的二进制文件。
你是如何在你的系统上安装mongodb的?尝试从源代码重新安装目标系统(尝试完全删除node_modules目录并再次运行npm install)。
作为对未来的建议,通常最好只部署项目的package.json文件并在本地执行npm install。