无法使用 Openshift 创建Node.js Web 服务器。对象 #<Object> 没有方法'listen'



我正试图在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"吗?

相关内容

最新更新