2

我正在将 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' }

有任何想法吗?提前致谢 :)

编辑:对不起,我的意思是'忽略*节点*模块'

4

2 回答 2

2

我的猜测是该模块是为您的本地架构(例如 x86)编译的,而尝试运行它的服务器是不同的架构(例如 64 位)。节点模块可以在其中包含 npm 将处理构建的 C++ 扩展,您不一定只是将 node_modules 文件夹中的二进制文件从一个平台移动到另一个平台,您需要重新编译它们。

我对 Cloudfoundry 的了解还不够,无法告诉您如何做到这一点,希望其他人有更好的答案。

于 2012-09-25T23:18:07.860 回答
0

我在设置开发 Docker 环境时遇到了类似的问题。我想将我的源文件挂载到 docker 映像上,但是为 docker 映像编译了一个 node_modules 目录。当我在 docker 映像上创建一个新目录时,npm install在该目录中,然后对我的一些源代码使用软链接,我看到了相同的行为。

解决方案:不要使用软链接。

于 2014-10-31T16:34:13.827 回答