这一切都发生在我的一台机器上——服务器和客户端机器都是相同的。我正在 w3schools 上学习,并已按顺序成功完成了 Node.js 示例,直到我尝试读取 html 文件以用作要显示的内容。服务器正确启动,如控制台中所示,光标闪烁,就像前面的示例一样,但是在尝试通过 chrome 访问本地主机时,我收到控制台记录的错误以及 chrome 中的一条通知,其中显示“127.0.0.1 拒绝连接”。
错误:
node:_http_outgoing:949
throw new ERR_INVALID_ARG_TYPE(
^
TypeError [ERR_INVALID_ARG_TYPE]: The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received undefined
at write_ (node:_http_outgoing:949:11)
at ServerResponse.write (node:_http_outgoing:904:15)
at ReadFileContext.callback (C:\path-to-file-omitted\demo_readfile.js:7:9)
at FSReqCallback.readFileAfterOpen [as oncomplete] (node:fs:299:13) {
code: 'ERR_INVALID_ARG_TYPE'
}
Node.js v22.13.0
这两个文件是我从 w3schools 逐字逐句使用的。
demofile1.html
<html>
<body>
<h1>My Header</h1>
<p>My paragraph.</p>
</body>
</html>
demo_readfile.js
var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
fs.readFile('demofile1.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
return res.end();
});
}).listen(8080);
使用 Powershell 使用“node C:\path-to-file ilename.js”使用我的文件启动 node.js 实例,我尝试以管理员身份运行 powershell。我尝试在谷歌和堆栈溢出上进行一些搜索,以在其他地方识别此错误,虽然它们看起来很相似,但据我所知,我发现的那些并不直接适用于我的问题,它们至少也没有给我一个解决方案。
因为你是新人,所以让我们分解一下: 在错误控制台中,注意指向代码的行:
at ReadFileContext.callback (C:\path-to-file-omitted\demo_readfile.js:7:9)
这意味着错误出现在第 7 行第 9 个字符中。 接下来,阅读错误:
The "chunk" argument must be of type string or an instance of Buffer or Uint8Array. Received undefined
因此,将两者结合起来,我认为您的
data
现在未定义,您正在尝试编写 undefined
并返回到浏览器。
那么您应该尝试的解决方案: