2013-10-08 70 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