Openshift Zombiejs

214 views Asked by At

I have a Node.js/Express application which I'm trying to deploy to Openshift.

The server itself starts up properly and serves almost everything.

One request to the server opens up a Zombiejs browser, which then crawls some webpages.

When the browser tries to visit a webpage however, I get this error:

{ [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)

The browser fails as soon as I call visit:

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

Before doing the above, I start an Express-based server as follows:

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);
});

The server starts up fine, however as soon as I make a request that calls browser.visit() the error is raised.

Update 11/15

I still haven't found a solution to this issue.

1

There are 1 answers

1
AudioBubble On BEST ANSWER

When the browser is created, it tries to use the ip address of 0.0.0.0 to bind to (https://github.com/assaf/zombie/blob/master/src/zombie/browser.coffee#L1224) by default, which is not available on OpenShift for your use, you need it to bind to your OPENSHIFT_NODEJS_IP ip address, just like you use for your express server. It looks like, at the top of the file that I linked to (https://github.com/assaf/zombie/blob/master/src/zombie/browser.coffee#L42), that one of the Browser options you can pass in is 'localAddress' when creating the Browser object, which should be the OPENSHIFT_NODEJS_IP. I think that will get it fixed up for you.