从response.write(string)获得'undefined'是JS

时间:2018-10-30 14:11:17

标签: javascript node.js response.write

我正在使用JS和Node JS创建一个http服务器。

它由一种形式组成,您可以在其中输入应作为文件路径名的文本。一旦按下提交按钮,它将在网页上显示该文件的内容。

我使用函数file(pathname)读取文件的内容,并将其作为String返回。然后,我尝试使用以下内容在网页上显示内容:

response.write('文件内容:'+字符串);但显示“文件内容:未定义”

我认为我的问题出在response.write()上,因为当我使用console.log()来显示文件内容正常工作时。

我做错了什么?

当您按下“提交”时,代码如下:

if(url_parts.pathname == '/submit') { //Processing the form content, if the relative URL is '/ submit'
    var pathname=url_parts.query['name']; //Read the contents of the field (form) named 'name'
    var string = file(pathname); //file(pathname) returns the content of the file.
    console.log("Creating a response header")
    response.writeHead(200, {"Content-Type": "text/plain; charset=utf-8"});  //Creating an answer header - we inform the browser that the body of the answer will be plain text
    console.log("Creating the body of the response")
    response.write('File content: '+ string); // Write content of the file
    response.end(); //The end of the response - send it to the browser
    console.log("Sending a response")
}

所有代码:

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


function file(pathname){
    fs.stat(pathname, function(err, stats) {
    console.log("----------------------------------------------------------");
    console.log("FILE OPERATION RESULT:");
    console.log("----------------------------------------------------------");
    if (err){ console.log("'" + pathname + "' is not a directory or a file");
    } else if(stats.isDirectory()){
        console.log("Is a directory");
    } else if(stats.isFile()){
        console.log("Is a file");
        console.log("Reading content...");
        console.log("---------------");
        fs.readFile(pathname, function (err, data) {
            fileContent=data.toString('utf8');
            console.log(fileContent);
            return fileContent;
        });
    }
});
}

http.createServer(function(request, response) {

    console.log("--------------------------------------")
    console.log("The relative URL of the current request: "+request.url+"\n")
    var url_parts = url.parse(request.url,true); //parsing (relative) URL

    if(url_parts.pathname == '/submit') { //Processing the form content, if the relative URL is '/ submit'
        var pathname=url_parts.query['name']; //Read the contents of the field (form) named 'name'
        var string = file(pathname);
        console.log("Creating a response header")
        response.writeHead(200, {"Content-Type": "text/plain; charset=utf-8"});  //Creating an answer header - we inform the browser that the body of the answer will be plain text
        console.log("Creating the body of the response")
        response.write('File content: '+ string); //WRITE FILECONTENT IF PATHNAME IS A FILE
        response.end(); //The end of the response - send it to the browser
        console.log("Sending a response")
    }
    else { //Generating the form
        console.log("Creating a response header")
        response.writeHead(200, {"Content-Type": "text/html; charset=utf-8"});  //Creating a repsonse header - we inform the browser that the body of the response will be HTML text
        //and now we put an HTML form in the body of the answer
            console.log("Creating a response body")
        response.write('<form method="GET" action="/submit">');
        response.write('<label for="name">Write pathname</label>');
        response.write('<input name="name">');
        response.write('<br>');
        response.write('<input type="submit">');
        response.write('<input type="reset">');
        response.write('</form>');
        response.end();  //The end of the response - send it to the browser
        console.log("Sending a response")
    } 
}).listen(8080);
console.log("The server was started on port 8080");
console.log("To end the server, press 'CTRL + C'");

0 个答案:

没有答案