2013-10-08 69 views
6

我試圖部署的Node.js應用到openshift在這個環節here的Node.js部署在openshift

我明白這個代碼

var http = require('http'); 

var server = http.createServer(function(req, res) { 
    res.writeHead(200); 
    res.end('Hello Http'); 
}); 
server.listen(3000); 

並沒有在本地運行它沒有問題

$ node server.js // saved as server.js 

但是,當我在openshift中提交此應用程序時,這是如何工作的?這是非常簡單的代碼。我有一些下載的代碼是聊天應用程序,客戶端服務器需要配置爲偵聽某個端口(我在本地主機中使用端口號3000)。

它可以在本地主機上的端口號3000上工作,但我怎樣才能使它在Openshift中工作?

回答

9

您需要購買連接端口process.env.OPENSHIFT_NODEJS_PORT。所以,這樣的事情應該工作:

server.listen(process.env.OPENSHIFT_NODEJS_PORT || 3000); 

在這裏看到,例如:Error: listen EACCES on Openshift app

+0

Nitzan嗨,我想這個代碼,但似乎並沒有工作。它現在說「找不到socket.io.js」。我搜索了一下,並嘗試了一些不同的代碼,但似乎沒有任何工作。一切工作正常本地,但是當我在openshift上傳相同的代碼,它不起作用。主要是,它沒有找到socket.io.js文件。我不知道如何解決它。 – jeewan

+0

您的原始問題已解決,您現在正面臨另一個問題。我建議你接受這個答案,並打開一個關於「找不到socket.io.js」的新問題。這是一個不同的問題,未來可能會尋找它的人不會根據這個問題的標題進行搜索。它也會給其他人一個回答的機會。在這個新問題中,你應該確定包含目錄結構和相關日誌。更好地描述問題:誰是「它」(在「現在說...」中) - 客戶?服務器?別的東西? –

+0

嗨Nitzan,對不起。今天早上我急着回覆你的回答,完全忘記接受你的回答。我接受你的答案,非常感謝你。我搜查了很多,並嘗試在Openshift服務器上進行修復,但無法解決它。今天晚些時候我會做更多的研究。對不起,我接受你的答案,並非常感謝你。 – jeewan

2

嘿與socket.io的問題是,你有一個安裝在本地而不是在openshift NPM包(依賴性不要推)。爲此,您可以通過ssh登錄(在openshift控制面板的右側菜單中查找「想要登錄到您的應用程序?」,然後按照instructions並使用提供的ssh連接),然後使用terminal putty登錄,並轉至:

cd app-root/repo 

cd $OPENSHIFT_REPO_DIR 

然後

npm install socket.io 

我使用的是安裝貓鼬和其他依賴無故障。你也可以使用

node server.js 

從命令行運行的網站;)

+1

或者你可以編輯你package.json – mcbjam

+1

只需'檢查openshift中的代碼'npm install',它將在本地獲取必需的包(在package.json中定義) – Tapirboy