Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 Node.js HTTP Web服务器结束后写入错误_Javascript_Node.js_Sockets_Websocket_Socket.io - Fatal编程技术网

Javascript Node.js HTTP Web服务器结束后写入错误

Javascript Node.js HTTP Web服务器结束后写入错误,javascript,node.js,sockets,websocket,socket.io,Javascript,Node.js,Sockets,Websocket,Socket.io,我是node.js的新手,一直在尝试只设置一个基本服务器 我运行了下面的代码,并得到一个“结束后写入”错误 html是一个基本的html文件,其正文中有一个hello world字符串。该文件中几乎没有其他内容。我尝试过使用“ReadFileSync”方法,但这会引发一系列我不完全理解的全新错误 我将非常感谢在这方面的任何帮助。我是新来的,所以请对我放松一点:)提前谢谢你 我已经验证了路径是正确的,并且缓冲区中确实有数据 var http = require('http'); var url =

我是node.js的新手,一直在尝试只设置一个基本服务器

我运行了下面的代码,并得到一个“结束后写入”错误

html是一个基本的html文件,其正文中有一个hello world字符串。该文件中几乎没有其他内容。我尝试过使用“ReadFileSync”方法,但这会引发一系列我不完全理解的全新错误

我将非常感谢在这方面的任何帮助。我是新来的,所以请对我放松一点:)提前谢谢你

我已经验证了路径是正确的,并且缓冲区中确实有数据

var http = require('http');
var url = require('url');
var fs = require('fs');

var server = http.createServer(function(request, response){
console.log('Connection');

var path = url.parse(request.url).pathname.substr(1);
path = "\\" + path;

switch(path){
    case '/':
        response.writeHead(200, {'Content-Type': 'text/html'});
        response.write('hello world');
        break;
    case '\\socket.html':
        //console.log(path);
        fs.readFile(__dirname + path, function(error, data){
            if(error){
                response.writeHead(404);
                response.write("This domain is missing");
            }
            else{
                console.log(data);
                response.writeHead(200, {"Content-Type": "text/html"});
                response.write(data,"utf8");
            }
        });
        break;
    default:
        response.writeHead(404);
        response.write("This domain is missing");
        break;
}

response.end();
});

服务器监听(8001)

我认为当您从文件系统异步读取时,在
response.write()
之前调用
response.end()
方法,我建议使用以下代码:

var http = require('http'); 
var url = require('url'); 
var fs = require('fs'); 
var server = http.createServer(function(request, response) {
    var path = url.parse(request.url).pathname.substr(1);
    path = "\\" + path; 
    switch(path) {
        case '/':
            response.writeHead(200, {'Content-Type': 'text/html'}); 
            response.write('hello world'); 
            response.end();
        break; 
        case '\\socket.html':
            fs.readFile(__dirname + path, function(error, data) { 
                if(error) {
                    response.writeHead(404); 
                    response.write("This domain is missing"); 
                } else {
                    response.writeHead(200, {"Content-Type": "text/html"});
                    response.write(data, "utf8"); 
                } 
                response.end();
            }); 
        break; 
        default: 
            response.writeHead(404); 
            response.write("This domain is missing"); 
            response.end();
        break;
    } 
});

谢谢你,卢卡!这解决了我的问题!我觉得这和async Fs.read有关,但因为我是新手,我不知道该如何处理。我很高兴能帮助你:)嘿@Luca!我遇到了另一个节点问题。我正在学习诀窍,我不完全清楚为什么会出现一些错误。我在上贴了一个新问题:你能帮我看看吗?提前谢谢!