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);
答案 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