节点js:适用于本地,但不适用于我的服务器

时间:2015-08-27 23:53:38

标签: node.js hosting connection-timeout diagnostics

在我的网络服务器上尝试节点(由某个公司托管)时,我意识到它不起作用。

我得到的问题是超时错误。

在我的本地计算机上,脚本可以运行。在服务器上,脚本不起作用,但我确认该节点有效,并带有“hello world”程序。

在这里,要在网络服务器上执行我的测试,我使用我能想到的最简单的节点程序(在'hello world'旁边):

简单节点程序

!peb

修改:修正了上述程序中的拼写错误。 ==>将“Server.listen”更改为“server.listen”。感谢@ Num8er注意到(不幸的是,这没有解决问题)。

经过一些研究,我纠正了一件事:将'0.0.0.0'指定为IP(在此之前,该部分被省略)。但它没有解决我的问题。现在,我找不到任何其他错误的东西(在程序中。但我是新手所以......)。

我怀疑这个问题可能来自我的主机,但我不知道如何对这种情况做出诊断。

以下是我拥有的所有数据:

在网络服务器上启动时的节目输出

var http = require('http');
var port = 8080;

console.log("*** Node script launched ***");

var server = http.createServer(function(req, res) {
  console.log('Ok, server launched.');
  res.writeHead(200);
  res.end('Message from the server : ok!');
});

server.listen(port,'0.0.0.0',function(){
  console.log((new Date())+' : OK. Server is listening.');
});

浏览器输出(chrome)

*** Node script launched ***
Fri Aug 28 2015 01:45:00 GMT+0200 (CEST) : OK. Server is listening.

我有两个问题:

  1. 您是否知道问题可能是什么?

  2. 您知道我可以采取哪些措施来对这种情况进行诊断。有没有办法判断节点是否正在正确收听?有没有办法监视我的客户端请求是否到达服务器。如果是,是否被阻止?在哪里被阻止?

  3. 感谢。

    卢瓦克。

2 个答案:

答案 0 :(得分:1)

我认为您在看到以下字词后停止申请:

  

"行。服务器在听。"

代码没有问题。
我相信你正在关闭终端或做ctrl + c
尝试永远使用应用程序。
使用以下命令安装:

npm install -g forever

使用以下方式运行您的应用:

forever start app.js

使用以下方式停止:

forever stopall

检查状态:

forever list

还有一件事。
如果您使用像C9这样的云服务。
所以最好将端口线更改为:

var port = process.env.PORT || 8080;

答案 1 :(得分:0)

这意味着您的应用程序没问题,但您的端口8080未在您的服务器中打开,如果遇到http://serverip:8080问题,您是否尝试导航到ERR_TIMED_OUT,那么问题是就像我说的那样在你的港口。