Openshift(node.js)无法安装jsdom

现在一直在使用Openshift / Node.Js,大多没有问题。 通常我安装(通过NPM)模块到我的本地(Windows)机器,开发,比Git部署到Openshift一切顺利。

我最近添加了jsdom模块(在本地再次正常工作),但是当我git-deploy(在git push上没有错误),当我尝试使用我的应用程序时,出现这个错误:

.../app-root/runtime/repo/node_modules/jsdom/node_modules/contextify/node_modules/bindings/bindings.js:91 throw err ^ Error: Could not locate the bindings file. 

后面跟着Node试图查找的目录列表。 当我检查远程服务器上的这些目录时,它们丢失(即使它们存在于本地计算机上并被推送)。 如果我试图通过ftp复制文件夹,我得到这个错误:

无效的ELF标头

我所理解的是,因为symxtify模块没有build立在服务器上(即我复制了它)。

请注意,我的package.json中的依赖项包含“jsdom”:“0.1.7”。

一些谷歌search后,我接下来尝试通过npm手动在远程服务器上安装模块。 这产生了以下错误:

 npm http 304 https://registry.npmjs.org/mime npm http 304 https://registry.npmjs.org/combined-stream npm http 304 https://registry.npmjs.org/async > contextify@0.1.7 install /var/lib/openshift/52...52/nodejs/node_modules/jsdom/node_modules/contextify > node-gyp rebuild npm http GET https://registry.npmjs.org/assert-plus/0.1.2 npm http GET https://registry.npmjs.org/asn1/0.1.11 npm http GET https://registry.npmjs.org/ctype/0.5.2 npm http 304 https://registry.npmjs.org/ctype/0.5.2 npm http 304 https://registry.npmjs.org/assert-plus/0.1.2 npm http 304 https://registry.npmjs.org/asn1/0.1.11 Traceback (most recent call last): File "/opt/rh/nodejs010/root/usr/bin/gyp", line 15, in <module> import gyp ImportError: No module named gyp gyp ERR! configure error gyp ERR! stack Error: `gyp` failed with exit code: 1 gyp ERR! stack at ChildProcess.onCpExit (/opt/rh/nodejs010/root/usr/lib/node_modules/node-gyp/lib/configure.js:417:16) gyp ERR! stack at ChildProcess.EventEmitter.emit (events.js:98:17) gyp ERR! stack at Process.ChildProcess._handle.onexit (child_process.js:784:12) gyp ERR! System Linux 2.6.32-431.el6oso.bz844450.x86_64 gyp ERR! command "node" "/opt/rh/nodejs010/root/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /var/lib/openshift/52...52/app-root/runtime/dependencies/nodejs/node_modules/jsdom/node_modules/contextify gyp ERR! node -v v0.10.5 gyp ERR! node-gyp -v v0.9.5 gyp ERR! not ok 

这是我现在卡住的地方。 这似乎是远程服务器缺less“gyp”,我不知道如何解决这个问题。 我已经安装了“node-gyp”模块,并且已经阅读了其他npm / openshift问题 ,但是不知道如何将它们应用于我的问题。

任何帮助将不胜感激。 提前致谢!

根据John Peat提出的问题评论,Ben Parees评论4在他链接的bugzilla问题上,似乎OpenShift Node.js 0.10盒式磁带在其shellpathvariables中缺lessGYPpath。

您的一组墨盒可能不提供GYP依赖项。 Python可能根本不可用。 我刚刚确认他们的Node.Js磁带盒中没有PYTHONPATH环境variables,而且系统没有设置为从命令行执行nmp用户。

尝试在packages.json中声明jsdom ,每个Redhat文档。

如果失败了,或者您需要更多的个人设置,比如提供您自己的Python,那么答案可能是构build一个盒式磁带。 这也是一个向Node 0.12或Io.js的机会。