Openshift Zombiejs

时间:2014-11-14 18:08:53

标签: node.js openshift zombie.js

我有一个Node.js / Express应用程序,我试图将其部署到Openshift。

服务器本身正常启动,几乎可以提供所有服务。

向服务器发出一个请求,打开一个Zombiejs浏览器,然后抓取一些网页。

当浏览器尝试访问网页时,我收到此错误:

{ [Error: bind EACCES] code: 'EACCES', errno: 'EACCES', syscall: 'bind' }
Possibly unhandled Error: bind EACCES
    at errnoException (net.js:901:11)
    at connect (net.js:747:21)
    at net.js:842:9
    at asyncCallback (dns.js:68:16)
    at Object.onanswer [as oncomplete] (dns.js:121:9)

一旦我拨打visit,浏览器就会失败:

browser.visit(menus_url).then(function () {
    // do things
});

在执行上述操作之前,我按如下方式启动基于Express的服务器:

var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080;
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP;
app.listen(server_port, server_ip_address, function() {
  console.log('Server running on port ' + server_port);
});

服务器启动正常,但是一旦我发出调用browser.visit()的请求,就会引发错误。

更新11/15

我仍然没有找到解决这个问题的方法。

1 个答案:

答案 0 :(得分:3)

创建浏览器时,默认情况下会尝试使用0.0.0.0的ip地址绑定到(https://github.com/assaf/zombie/blob/master/src/zombie/browser.coffee#L1224),这在OpenShift上不可用,需要它绑定到你的OPENSHIFT_NODEJS_IP IP地址,就像您用于快速服务器一样。看起来,在我链接到(https://github.com/assaf/zombie/blob/master/src/zombie/browser.coffee#L42)的文件的顶部,您可以传入的一个浏览器选项是创建Browser对象时的“localAddress”,该对象应该是OPENSHIFT_NODEJS_IP。我认为这样可以帮到你。