Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 服务器在8080上运行,但浏览器显示网页不可用_Javascript_Node.js_Localhost_Server_Port - Fatal编程技术网

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

Javascript 服务器在8080上运行,但浏览器显示网页不可用,javascript,node.js,localhost,server,port,Javascript,Node.js,Localhost,Server,Port,我遵循了本教程()的内容,当运行下一个到最后一个脚本(用于创建静态服务器)时,命令提示符会显示“服务器在端口8080上运行”,但当尝试在localhost:8080上访问它时,我只得到一个网页不可用错误 我在防火墙中制定了一条规则,允许访问8080 这可能是什么原因造成的?我应该尝试从其他地址访问该页面吗 当我尝试访问该页面时,我在cmd中收到以下错误消息: C:\Users\id122302\Documents\test.js:11 存在(完整路径,函数(存在) ^ TypeError:un

我遵循了本教程()的内容,当运行下一个到最后一个脚本(用于创建静态服务器)时,命令提示符会显示“服务器在端口8080上运行”,但当尝试在localhost:8080上访问它时,我只得到一个网页不可用错误

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

这可能是什么原因造成的?我应该尝试从其他地址访问该页面吗

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

C:\Users\id122302\Documents\test.js:11
存在(完整路径,函数(存在)
^
TypeError:undefined不是函数
在服务器上。(C:\Users\id122302\Documents\test.js:11:7)
在Server.emit上(events.js:110:17)
在HTTPParser.parserOnIncoming[作为onIncoming](_http_server.js:491:12)
在HTTPParser.parserOnHeadersComplete(_http_common.js:111:23)
在Socket.socketOnData(_http_server.js:343:22)
在Socket.emit(events.js:107:17)
在readableAddChunk(_stream_readable.js:163:16)
在Socket.Readable.push(_stream_Readable.js:126:10)

在TCP.onread(net.js:538:20)
您的服务器显示一个异常和一个行号=>去那个地方

正如@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的弱类型语言中,以及在这种语言中,大量教程都是由完全初学者编写的。这是您的朋友:

谢谢您的帮助和建议,运行此代码只会给我404,所以现在的挑战是如何显示页面,感谢您的帮助将测试页面放在与脚本相同的目录中;假设您的测试页面名为“hi.txt”,包含“At laaaaaaast…:)”;然后调用localhost:8080/hi.txt