OpenShift not working with certain Nodejs dependencies (Koa)

匿名 (未验证) 提交于 2019-12-03 08:48:34

问题:

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?

回答1:

Quick deploy 0.12

https://hub.openshift.com/quickstarts/128-node-js-0-12

For people that whishes to deplot nodejs 0.12 use the link above, there's a button Deploy.

0.12.2

To deploy the specific version 0.12.2 copy the directory .openshift from https://github.com/ryanj/nodejs-custom-version-openshift and overwrite your current projects .openshift directory (I am presuming you are using OpenShifts git that was created when the app was created).

Navigate your way to your-project/.openshift/markers/ and open the file NODEJS_VERSION and add 0.12.2 at the bottom. My file looks as so:

#  Uncomment one of the version lines to select the node version to use. #  The last "non-blank" version line is the one picked up by the code in #  .openshift/lib/utils #  Default: 0.10.25 # #  0.8.24 #  0.9.1 #  0.10.25 #  0.11.11 #  0.10.25 0.12.2

Then upload your project via git to OpenShift (be in your project root directory).

git add -A . git commit -a -m "replaced .openshift directory" git push

--harmony flag?

as stated in ECMAScript 6 features available in Node.js 0.12 --harmony flag is still needed for certain functions.

This means adding it too your package.json file, look at my question to see an example.



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!