OpenShift无法与某些Nodejs依赖项(Koa)配合使用

4
我已经查看了如何在Openshift中设置KoaJS,但仍然无法工作。
这是我的package.json文件的一部分:
  "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"

然后转到我的app.js文件。
这段代码可行:
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+'/');

这样是行不通的:

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+'/');

您可以看到,唯一的区别是我取消了两行注释。

错误:

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

在OpenShift上的错误日志中显示:

...
.../app-root/runtime/repo/node_modules/koa/lib/application.js:179
function *respond(next) {
         ^
SyntaxError: Unexpected token *
...

很明显,我犯了一个错误。

console.log(process.versions);显示我正在使用node 0.10.25,尽管我在package.json中声明希望使用>= 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' }

什么原因导致OpenShift未使用0.12.2版本?
1个回答

1
快速部署 0.12

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

如果您想部署 Node.js 0.12,请使用上面的链接,有一个名为Deploy的按钮。

0.12.2

要部署特定版本的0.12.2,请从https://github.com/ryanj/nodejs-custom-version-openshift复制目录.openshift并覆盖当前项目的.openshift目录(假设您使用的是创建应用程序时生成的OpenShift git)。
导航到your-project/.openshift/markers/,打开文件NODEJS_VERSION,在底部添加0.12.2。我的文件如下所示:
#  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

然后通过git将您的项目上传到OpenShift(需在项目根目录下操作)。

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

--harmony标志?

正如Node.js 0.12中可用的ECMAScript 6功能所述,某些函数仍需要--harmony标志。

这意味着需要将它添加到您的package.json文件中,请参考我的问题以查看示例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接