我正试图在Openshift上部署一个简单的node.js应用程序,但我根本无法让它运行。我的包.json是:
{
"name": "songcatapp",
"version": "1.0.0",
"engines": {
"node": ">= 0.6.0",
"npm": ">= 1.0.0"
},
"dependencies": {
"colors": "0.x.x",
"optimist": "0.2.x",
"pkginfo": "0.2.x",
"http-proxy": "0.7.3",
"htmlparser": "1.7.3",
"mongodb": "0.9.7-0",
"ent": "0.x.x"
},
"devDependencies": {},
"bundleDependencies": [],
"private": true,
"scripts": {
"start": "node server.js"
},
"main": "server.js"
}
我的server.js是:
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1'
console.log("ServerPort: "+server_port+", ServerIP: "+server_ip_address);
http.createServer(function(request, response) {
response.writeHead(200);
response.end('Hello Http');
});
console.log("http: %j", http);
http.listen(server_port, server_ip_address, function () {
console.log( "Listening on " + server_ip_address + ", server_port " + port )
});
在应用程序启动时,我得到的错误是:
http.listen(server_port, server_ip_address, function () {
^
TypeError: Object #<Object> has no method 'listen'
at Object.<anonymous> (/var/lib/openshift/53520a0be0b8cd914a000187/app-root/runtime/repo/server.js:578:6)
我已经在DotCloud和Amazon上部署了该应用程序,没有任何问题。我已经在Openshift上呆了几天了!
有人能帮忙吗?
非常感谢
http.createServer()
创建并返回一个服务器实例对象,该实例具有listen()
:等服务器方法
var server = http.createServer(function(request, response) {
response.writeHead(200);
response.end('Hello Http');
});
server.listen(server_port, server_ip_address, function () {
console.log( "Listening on " + server_ip_address + ", server_port " + port )
});
看起来并没有加载http
模块。
此外,我认为您希望创建一个server
,然后调用server.listen
,或者可能将这两个语句链接在一起,如下所示:
var http = require('http')
var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080
var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1'
http.createServer(function(request, response) {
response.writeHead(200);
response.end('Hello Http');
}).listen(server_port, server_ip_address, function () {
console.log( "Listening on " + server_ip_address + ", server_port " + server_port )
});
您的代码在本地运行时是"npm install"后接"npm start"吗?