我正在将一个node.js应用程序部署到Cloudfoundry,唯一的模块依赖项是restify。我尝试使用本地 node_modules 目录推送它,并在 cloudfoundry.json 中使用 npm Shrinkwrap 和“ignoreModules”,但最终总是在 stdout.log 中出现此内容:
{ stack: [Getter/Setter],
arguments: undefined,
type: undefined,
message: '/var/vcap/data/dea/apps/myapp-0-6f9cf62f9bbe58f5d2eb13a94acb5d3a/app/node_modules/restify/node_modules/dtrace-provider/build/Release/DTraceProviderBindings.node: invalid ELF header' }
有什么想法吗?预先感谢:)
编辑:抱歉,我的意思是“忽略* Node *模块”
最佳答案
我的猜测是该模块是针对您的本地架构(例如 x86)编译的,并且尝试运行它的服务器是不同的架构(例如 64 位)。 Node 模块中可以有 C++ 扩展,npm 将处理构建,您不一定只是将 node_modules 文件夹中的二进制文件从一个平台移动到另一个平台,您需要重新编译它们。
我对 Cloudfoundry 的了解还不够,无法告诉您如何做到这一点,希望其他人有更好的答案。
关于node.js - Cloudfoundry 上的 Restify 'invalid ELF header',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592147/