无法在openshift上运行特定版本的节点

Aks*_*rma 2 node.js openshift

我遵循存储库中描述的步骤,但我似乎无法使其工作.当我查看我的env文件时,nodejs版本仍然是.6.20

我的节点js版本文件是默认版本,因此应该运行节点版本.8.9.知道为什么会这样吗?

我的标记文件:

0.8.9
Run Code Online (Sandbox Code Playgroud)

我尝试启动应用程序时调试输出

==> nodejs/logs/node.log <==

npm ERR! node -v v0.6.20
npm ERR! npm -v 1.1.37
npm ERR! code ELIFECYCLE
npm ERR! message application-name@0.0.1 start: `node server.js`
npm ERR! message `sh "-c" "node server.js"` failed with 1
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR!     /var/lib/openshift/51ba8386e0b8cd2873000002/app-root/runtime/repo/npm-        debug.log
npm ERR! not ok code undefined
npm ERR! not ok code 1
Run Code Online (Sandbox Code Playgroud)

只是为了完整.我的package.json文件

{

"name": "application-name",
"version": "0.0.1",
"private": true,
"scripts": {
"start": "node server.js"
 },

"dependencies": {

    "express": "3.2.5",
    "mustache": "*",
    "request" : "*",
"buildify":"*",
"cheerio" : "*",
"slugs" : "*",
"to-markdown":"*",
"consolidate":"*"
  }
}
Run Code Online (Sandbox Code Playgroud)

应用程序在本地运行就好了.

ʀɣα*_*αɳĵ 6

我更喜欢这个版本的nodejs入门代码:https://github.com/ryanj/nodejs-custom-version-openshift

它包含.openshiftnodejs 的更新版本的应用程序构建挂钩.它将读取Marker文件,但也支持直接从package.json文件的engines属性读取以编译Nodejs运行时.

"engines": {
  "node": ">= 0.10.0",
  "npm": ">= 1.0.0"
},
Run Code Online (Sandbox Code Playgroud)

我希望将它合并.openshiftOpenShift上所有nodejs应用程序的默认文件夹内容.

您还需要确保绑定到新的环境变量:OPENSHIFT_NODEJS_IPOPENSHIFT_NODEJS_PORT.这些最近被重命名.

我通常会将这样的内容添加到我的应用程序代码中,允许它在任何地方运行:

var ip_addr = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';
var port = process.env.OPENSHIFT_NODEJS_PORT || '8080';
Run Code Online (Sandbox Code Playgroud)

OpenShift当前显示输出npm start,可能无法显示所有应用程序的输出.有关其他调试信息,您可以尝试手动启动应用程序:

  1. 首先,从命令行停止您的应用程序: rhc app stop APP_NAME
  2. 然后,连接到您的应用程序齿轮/容器 rhc ssh APP_NAME
  3. cd $OPENSHIFT_REPO_DIR
  4. 并手动运行package.json文件scripts.start属性中定义的任何命令.

希望这能让您更清楚地了解正在发生的事情.