繁体   English   中英

Openshift(node.js)无法安装jsdom

[英]Openshift (node.js) fails to install jsdom

已经使用Openshift / Node.Js一段时间了,大部分都没有问题。 通常我安装(通过npm)模块到我的本地(windows)机器,开发,而不是git-deploy到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标头

我理解的是因为contextify模块没有在服务器上构建(即,我复制了它)。

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

经过一些谷歌搜索,我接下来尝试通过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

这就是我现在陷入困境的地方。 看起来远程服务器缺少“gyp”,我不知道如何解决这个问题。 我安装了“node-gyp”模块,我在这里阅读了其他npm / openshift问题 ,但不知道如何将它们应用到我的问题中。

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

Per Per Peat在问题评论中,Ben Parees在他链接的bugzilla问题上评论4,似乎OpenShift Node.js 0.10盒式磁带在其shell路径变量中缺少GYP的路径。

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

根据Redhat文档尝试在packages.json中声明jsdom

如果失败了,或者您需要更个性化的设置,比如提供自己的Python,那么答案可能是构建一个盒式磁带。 这也是一个向上移动到节点0.12或Io.js的机会。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM