I've checked out How to setup KoaJS in Openshift and it's still not working.
Here is a part of my package.json file:
  "engines": {
    "node": ">= 0.12.0",
    "npm": ">= 1.0.0"
  },
  "dependencies": {
    "co-busboy": "^1.3.0",
    "forever": "^0.14.1",
    "fs": "0.0.2",
    "koa": "^0.18.1",
    "koa-logger": "^1.2.2",
    "koa-router": "^4.2.0",
    "koa-static": "^1.4.9",
    "path": "^0.11.14"
    },
  "devDependencies": {},
  "bundleDependencies": [], 
  "private": true,
  "main": "--harmony app.js"
And then to my app.js file.
This code works:
var http = require('http');
//var koa = require('koa');
//var app = koa();
var ip = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1',
    port = process.env.OPENSHIFT_NODEJS_PORT || '8080';
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(port, ip);
console.log('Server running at http://'+ip+':'+port+'/');
This does not work:
var http = require('http');
var koa = require('koa');
var app = koa();
var ip = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1',
    port = process.env.OPENSHIFT_NODEJS_PORT || '8080';
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(port, ip);
console.log('Server running at http://'+ip+':'+port+'/');
As you can see the only difference is that I have uncommented two lines.
Error:
Service Temporarily Unavailable
The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.
Apache/2.2.15 (Red Hat) Server at fela-basickarl.rhcloud.com Port 80
Error logs on OpenShift state this:
...
.../app-root/runtime/repo/node_modules/koa/lib/application.js:179
function *respond(next) {
         ^
SyntaxError: Unexpected token *
...
A big duh.
console.log(process.versions); reveals that I am using node 0.10.25, even though I stated in package.json that I wish to use >= 0.12.0:
{ http_parser: '2.0',
  node: '0.10.25',
  v8: '3.14.5.10',
  ares: '1.9.1',
  uv: '0.10.23',
  zlib: '1.2.3',
  modules: '11',
  openssl: '1.0.0-fips' }
What is causing OpenShift to not use 0.12.2?
 
    