2015-07-10 50 views
9

我提前知道這是怎樣的一個模糊的問題,但我難倒到還有什麼我可以試試這裏...OpenShift:「無法執行控制啓動」節點應用

我已經一直在經歷其他SO問題並遵循他們的建議,但到目前爲止還沒有任何解決我的問題。

這是我得到的具體錯誤。

Stopping NodeJS cartridge 
Fri Jul 10 2015 10:36:28 GMT-0400 (EDT): Stopping application 'appname' ... 
Fri Jul 10 2015 10:36:29 GMT-0400 (EDT): Stopped Node application 'appname' 

Starting NodeJS cartridge 
Fri Jul 10 2015 10:36:30 GMT-0400 (EDT): Starting application 'appname' ... 

Waiting for application port (8080) become available ... 

Application 'appname' failed to start (port 8080 not available) 

Failed to execute: 'control restart' for /var/lib/openshift/MYID/nodejs 

package.json文件是最新的,將我所有的依賴,有scripts: { start: 'node server.js' }財產,但我仍然收到此錯誤。

如果我SSH進入我的current/repo目錄並運行node server.js它工作正常。但是,我不能僅僅使用screen在後臺運行它永遠。

我也嘗試過停止和重新啓動,git推送,並通過瀏覽器重新啓動。我很難理解我還可以嘗試讓我的(非常簡單的)節點應用程序在OpenShift上運行。

任何建議,非常感謝。

回答

13

對於OpenShift Node應用程序,您需要將啓動腳本指定爲:main: "server.js"而不是使用scripts。這是由於節點應用程序使用node-supervisor在OpenShift上啓動的方式。

+4

嗯,感謝您的評論,我對我的'package.json'進行了雙重檢查,而不是'main'下文件名的句號,我用逗號。 * facepalm *謝謝! – Scheda

+0

另外,在啓動時需要的其他文件中可能會出現一些語法錯誤。我有一個子文件錯誤,並且無法啓動應用程序,直到我修復了其他文件。 – George

12

OpenShift節點應用需要你給的配置來啓動你的應用程序中的package.json主要scripts.start

"scripts": { 
    "start": "node server.js" 
    }, 
"main": "server.js" 

而且還需要給它IPPORT由您的節點環境通過環境變量提供:

for PORT Number  process.env.OPENSHIFT_NODEJS_PORT 
for IP    process.env.OPENSHIFT_NODEJS_IP 

如果應用程序沒有使用這些變量,它顯示了錯誤,它看起來像:

Waiting for application port (8080) become available ... 
Application 'appname' failed to start (port 8080 not available) 

下面是一個例子來說明如何在節點應用程序中使用這些環境變量(從源代碼):

var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080 
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1' 

server.listen(server_port, server_ip_address, function() { 
console.log("Listening on " + server_ip_address + ", server_port " + port) 
}); 

來源:https://blog.openshift.com/run-your-nodejs-projects-on-openshift-in-two-simple-steps/

相關帖子:Application 'appname' failed to start (port 8080 not available) on open shift node app

+0

也別忘了在json-snippet中使用{和a},否則它將不能編譯。 – GlabbichRulz