节点JS异步错误

时间:2016-05-25 12:00:21

标签: javascript node.js

你知道为什么这段代码:

var http = require('http');
var fs = require("fs");
var fileDir = "file.txt";
var port = 8080;
var chunk;

var readContent = (directory) => {
    fs.readFile(directory, (err, response) => {
        if(err) {
            throw(err);
        } else {
            return response.toString();
        }
    });
};

http.createServer((request, response) => {
    var content = readContent(fileDir);
    console.log("Someone is visiting: ", request.url);
    response.write(content);
    response.end();
}).listen(port, function() {
    console.log("The server is listening in port: " + port);
});

我认为错误在于 var content = readContent(fileDir); 部分。

引发此异常:

_http_outgoing.js:447
    throw new TypeError('first argument must be a string or Buffer');
    ^

TypeError: first argument must be a string or Buffer

1 个答案:

答案 0 :(得分:2)

readContent不会返回任何值,因此您将undefined传递给response.write()。您需要正确使用回调,或切换到fs.readFileSync(不推荐)