【问题标题】:Node.js - Serve HTML to a remote clientNode.js - 为远程客户端提供 HTML
【发布时间】:2015-09-11 06:10:45
【问题描述】:

我正在从我的 Node.js 服务器提供一个 HTML 文件。服务器代码是 -

var port = 3000;
var serverUrl = "0.0.0.0";

var http = require("http");
var path = require("path"); 
var fs = require("fs");         
console.log("Starting web server at " + serverUrl + ":" + port);

var server = http.createServer(function(req, res) {

    var filename = req.url || "/realtime-graph-meterNW.html";
    var ext = path.extname(filename);
    var localPath = __dirname;
    var validExtensions = {
        , '.css'   : 'text/css'
        , '.html'  : 'text/html'
        , '.js'    : 'application/javascript'
    };
    var isValidExt = validExtensions[ext];

    if (isValidExt) {

        localPath += filename;
        path.exists(localPath, function(exists) {
            if(exists) {
                console.log("Serving file: " + localPath);
                getFile(localPath, res, ext);
            } else {
                console.log("File not found: " + localPath);
                res.writeHead(404);
                res.end();
            }
        });

    } else {
        console.log("Invalid file extension detected: " + ext)
    }

}).listen(port, serverUrl);

function getFile(localPath, res, mimeType) {
    fs.readFile(localPath, function(err, contents) {
        if(!err) {
            res.setHeader("Content-Length", contents.length);
            res.setHeader("Content-Type", mimeType);
            res.statusCode = 200;
            res.end(contents);
        } else {
            res.writeHead(500);
            res.end();
        }
    });
}

当我尝试在我自己的 PC 上使用浏览器运行 HTML 文件时,使用 http://localhost:3000/realtime-graph-meterNW.html,它工作正常。

但是,当我尝试使用我的 IP 地址从同一网络上另一台 PC 上的浏览​​器访问相同内容时,我收到错误消息 - Failed to load resource: the server responded with a status of 503 (Service Unavailable).

我不明白我要去哪里错了。有什么建议吗?

【问题讨论】:

    标签: javascript html node.js


    【解决方案1】:

    可能您的本地防火墙阻止了与您机器的 3000 端口的连接。

    检查您的防火墙设置。 您必须在防火墙设置中允许从外部访问您的 PC。

    同时检查这个问题和答案:

    How could others, on a local network, access my NodeJS app while it's running on my machine?

    就像我链接的问题上接受的答案所说的那样,您必须确保输入正确的 URL,例如 http://192.168.3.200:3000(如果您的 IP 是 192.168.3.200),当试图从 LAN 访问您的服务器。

    【讨论】:

    • 我检查了我输入的 URL,它是正确的。如您所说,这可能是防火墙问题。会调查的。
    • "检查您的防火墙设置。您必须允许防火墙设置中的您的 PC 可以从外部访问。"这就是问题所在,我的电脑不允许外部连接端口 3000。谢谢
    • 很高兴能够帮助您并提出可能的解决方案。
    猜你喜欢
    • 2017-05-25
    • 1970-01-01
    • 2011-05-31
    • 2020-11-20
    • 1970-01-01
    • 2020-06-18
    • 2021-08-07
    • 2020-07-15
    • 2012-07-23
    相关资源
    最近更新 更多