Node.js非常基本但是偷偷摸摸的错误

时间:2017-10-26 19:28:06

标签: javascript node.js

Gooday们,我对Node.js有疑问。我最近开始从w3schools学习它。但是当我复制这段代码时,发生以下异常:

TypeError: First argument must be a string or Buffer

我有 index.html 文件,看起来非常基本。它不应该是代码的混乱。

var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
  fs.readFile('index.html', function(err, data) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(data);
    res.end();
  });
}).listen(8080);

2 个答案:

答案 0 :(得分:2)

不要忽视错误!(这会让事情变得更糟)

fs.readFile('index.html', function(err, data) {

这将传递数据错误将为null,或者如果发生错误数据将为{{1} }和错误null。当后来发生时,你忽略它并做

Error

不能用作数据 res.write(data); ,并且您无法向客户端发送null(只有错误中所述的Buffers或Strings)。 那么该怎么办?好吧添加一个错误处理程序:

null

所以现在你可能会得到真正的错误

fs.readFile('index.html', function(err, data) {
 if(err)
   return res.write(err.message);

 res.writeHead(200, {'Content-Type': 'text/html'});
 res.write(data);
 res.end();
});

因此,您可以检查是否有 index.html 文件。

答案 1 :(得分:0)

这种情况的发生主要是因为res.write()或res.end()其中一个接受字符串作为其第一个参数尝试使用res.send(data)将正常工作。祝你有美好的一天。快乐学习NodeJS