我有一个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()
的请求,就会引发错误。
我仍然没有找到解决这个问题的方法。
答案 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。我认为这样可以帮到你。