服务器在8080上运行,但浏览器显示网页不可用

时间:2015-08-06 09:06:29

标签: javascript node.js localhost server port

我遵循了本教程(http://www.hongkiat.com/blog/node-js-server-side-javascript/),当运行倒数第二个脚本(用于创建静态服务器)时,命令提示符显示"服务器在端口8080"上运行,但在尝试时访问localhost:8080我只是得到一个网页不可用错误。

我在防火墙中制定了规则,允许访问8080。

可能导致这种情况的原因是什么?我应该尝试从其他地址访问该页面吗?

当我尝试访问该页面时,我在cmd中收到以下错误消息:



var sys = require("sys");
my_http = require("http");
path = require("path");
url = require("url");
filesys = require("fs");
//Create Server
my_http.createServer(function(request,response)
{
	var my_path = url.parse(request.url).pathname;
	var full_path = path.join(process.cwd(),my_path);
	path.exists(full_path,function(exists)
	{
		if (!exists)
		{
			response.writeHeader(404, {"Content-Type":"text/plain"});
			response.write("404 Not Found\n");
			response.end();
		}
		else
		{
			filesys.readFile(full_path, "binary", function(err,file)
			{
				if (err)
				{
					response.writeHeader(500,{"Content-Type":"text/plain"});
					response.write(err + "\n");
					response.end();
				}
				else
				{
					response.writeHeader(200);
					response.write(file,"binary");
					response.end();
				}
			});
		}
	});
}).listen(8080);
console.log("Server Running on 8080");




这是我的代码:



Dim xmlDoc = New XmlDocument()
xmlDoc.Load("c:\inetpub\" & sServer & "\web.config")
Dim nsmgr As New XmlNamespaceManager(xmlDoc.NameTable)
nsmgr.AddNamespace("d", "http://schemas.microsoft.com/.NetConfiguration/v2.0")
......
......
xmlDoc.SelectSingleNode("//d:appSettings", nsmgr).AppendChild(nodeRegion)
xmlDoc.Save("c:\inetpub\" & sServer & "\web.config")




1 个答案:

答案 0 :(得分:2)

您的服务器显示例外情况并且行号=>去那个地方!

正如@maniacnero所观察到的那样,API中没有path.exists这样的东西。有一个fs.exists但它已被弃用,以避免滥用节点的并发上下文。

可怕的情况是:

  • 如果文件存在,则异步检查。
  • 其他一些例程会同时删除/重命名它,或者服务器上的其他内容删除/重命名。
  • 您认为该文件存在,因此您尝试打开它并自信地不处理错误案例。

所以这里吸取的教训是:

  • 原子地做事
  • 总是立即处理失败

如果你坚持这个学科,就不需要fs.exists这样的事情。这是您的代码的修改版本:

var sys = require("sys");
var http = require("http");
var path = require("path");
var url = require("url");
var fs = require("fs");


var port = 8080;


http.createServer(function(request,response) {
    var my_path = url.parse(request.url).pathname;
    var full_path = path.join(process.cwd(),my_path);
    fs.readFile(full_path, function(err, file) {
        if (err) {
            response.writeHeader(404, {"Content-Type":"text/plain"});
            response.write("404 Not Found\n");
            response.end();
        } else {
            response.writeHeader(200);
            response.write(file);
            response.end();
        }
    });
}).listen(port);

console.log("Server Running on " + port);

我还删除了那些“二元”的东西,这些东西过时了,也没有记录在API中!

使用示例代码是一种很好的学习方法,但前提是你不要盲目地做。 ;)特别是在一个弱类型语言的基础上,建立在快速变化的API上,并且无数的教程都是由初学者编写的。这是你的朋友:https://nodejs.org/api/