2014-11-14 64 views
1

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

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

对服务器的一个请求打开一个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

我相信EACCES错误意味着它无法访问指定的端口。 (虽然不幸的是,它没有说出是哪个端口......)通常在创建服务器时发生,而不是在运行客户端时。你正在运行本地Web服务器吗? – 2014-11-17 16:34:57

+0

@NathanFriedly更新了我的问题:) – apparatix 2014-11-17 16:42:51

+1

好的,有趣的。我刚刚设置了一个测试应用程序 - 只需要搜索google.com并返回html。它在localhost上正常工作,在openshift上和你有相同的错误。我会让你知道,如果我找出原因... – 2014-11-17 18:35:54

回答

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),在创建浏览器对象时,您可以传入的浏览器选项之一是'localAddress',它应该是OPENSHIFT_NODEJS_IP。我认为这会为你解决问题。

+0

我在想这是问题,但我不知道如何解决它。你想法工作! – apparatix 2014-11-19 21:41:30