node.js - OpenShift 不适用于某些 Nodejs 依赖项 (Koa)

标签 node.js openshift koa

我已经 checkout How to setup KoaJS in Openshift它仍然无法正常工作。

这是我的 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?

最佳答案

快速部署0.12

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

对于希望部署 nodejs 0.12 的人,请使用上面的链接,那里有一个按钮 Deploy

0.12.2

要部署特定版本 0.12.2https://github.com/ryanj/nodejs-custom-version- 复制目录 .openshift openshift 并覆盖您当前的项目 .openshift 目录(我假设您使用的是在创建应用程序时创建的 OpenShifts 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

--和谐标志?

ECMAScript 6 features available in Node.js 0.12 中所述-- 某些功能仍然需要和谐标志。

这意味着将它也添加到您的 package.json 文件,查看我的问题以查看示例。

关于node.js - OpenShift 不适用于某些 Nodejs 依赖项 (Koa),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29848177/

相关文章:

openshift - 在集群外部公开 TCP 端口

javascript - 在 Koa.js 中仅重定向未经身份验证的用户以查找丢失的资源?

node.js - 使用 Koa 启动文件下载

javascript - Koa中,中间件中的await next()、return await next()、return next()、next()有什么区别?

c# - socket.io 使用 Newtonsoft.json 和 socketIOClient 发送到 C#

openshift - 如何在 Openshift 中调试 503 错误?

node.js - 如何重置nodejs流?

javascript - 无法使用 OpenShift 运行 socket.io 和 nodejs

javascript - 使用 sinon 进行快速中间件函数的 stub 是

javascript - 如何让一段代码每15分钟连续执行一次?