已经使用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.
Run Code Online (Sandbox Code Playgroud)
接下来是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
Run Code Online (Sandbox Code Playgroud)
这就是我现在陷入困境的地方.看起来远程服务器缺少"gyp",我不知道如何解决这个问题.我安装了"node-gyp"模块,我在这里阅读了其他npm/openshift问题,但不知道如何将它们应用到我的问题中.
任何帮助将不胜感激.提前致谢!
小智 0
根据 John Peat 的问题评论和 Ben Parees 在他链接的 bugzilla 问题上的评论 4,似乎 OpenShift Node.js 0.10 盒在其 shell 路径变量中缺少 GYP 的路径。
您的盒式磁带集可能不提供 GYP 依赖性。Python 可能根本不可用。我刚刚确认其 Node.Js 盒中没有 PYTHONPATH 环境变量,并且系统未设置为从命令行以用户身份执行 nmp。
尝试根据 Redhat 文档在 packages.json 中声明 jsdom。
如果失败,或者您需要更个性化的设置,例如提供您自己的 Python,那么答案可能是构建一个卡带。这也是升级到 Node 0.12 或 Io.js 的机会。
| 归档时间: |
|
| 查看次数: |
755 次 |
| 最近记录: |