【问题标题】:Node js : works on local, but not on my serverNode js:适用于本地,但不适用于我的服务器
【发布时间】:2015-08-28 10:12:49
【问题描述】:

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

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

在我的本地机器上,该脚本有效。在服务器上,脚本不工作,但我确认节点工作,有一个“hello world”程序。

在这里,为了在网络服务器上执行我的测试,我使用了我能想到的最简单的节点程序(除了“hello world”):

简单节点程序

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.');
});

编辑:更正了上述程序中的一个错字。 ==> 将“Server.listen”更改为“server.listen”。感谢@Num8er 的关注(不幸的是,这并没有解决问题)。

所以经过一番研究,我更正了一件事:将“0.0.0.0”指定为 IP(在此之前,该部分被忽略了)。但这并没有解决我的问题。现在,我找不到任何其他可能有问题的地方(在程序中。但我是新手,所以......)。

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

这是我拥有的所有数据:

在网络服务器上启动时的程序输出

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

浏览器输出(chrome)

This webpage is not available

ERR_TIMED_OUT

我有两个问题:

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

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

谢谢。

洛伊克。

【问题讨论】:

    标签: node.js hosting connection-timeout diagnostics


    【解决方案1】:

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

    “好的。服务器正在监听。”

    代码可以正常工作。
    我相信您正在关闭终端或执行 ctrl+c
    尝试使用永久运行应用程序。
    使用安装它:

    npm install -g forever
    

    使用以下命令运行您的应用:

    forever start app.js
    

    停止使用:

    forever stopall
    

    检查状态:

    forever list
    

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

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

    【讨论】:

    • 你好 Num8er。感谢您的评论。这是我以某种方式引入的错字(我不知道如何)。在写这篇文章时,我重新测试了程序并注意到“服务器”而不是“服务器”(这导致了执行错误)。我已经复制粘贴了,忘记在帖子中更正了。但不幸的是,这并没有改变问题。
    • 代码运行良好,问题是您如何在浏览器中导航它?
    • 你好 num8er。我可以向你保证,我不会以任何方式关闭我的终端。我也认为代码很好(毕竟很简单)。我真的怀疑问题出在主机、服务器配置或类似的东西上。我尝试检查服务器上打开了哪些端口,但我似乎没有权限:netstat -lntu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State netstat: /proc/net/tcp: Permission denied netstat: /proc/net/tcp6: Permission denied
    【解决方案2】:

    另外,不确定您使用的网络服务器,但端口号也可能是个问题。

    我确实知道在 Heroku 部署中我必须使用类似以下内容的东西:

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

    【讨论】:

      【解决方案3】:

      这意味着您的应用程序很好,但您的端口 8080 未在您的服务器中打开,您是否尝试导航到 @987654321@ 如果它有 ERR_TIMED_OUT 问题,那么问题出在您的端口上,正如我所说.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多