如何解决为什么 Node.js javascript 函数 res.write(data) 在我记录时输出数字?
我在 RaspBerry Pi 上使用 Node.js 读取本地文件“test.html”,当我记录输出时,它看起来像是十六进制而不是 html。为什么是这样?另外,我知道 fs.readFile 仅适用于本地文件。我会用什么来读取像 'myzone.example.com/test.html' 这样的 URI? (提前感谢您的任何帮助。)
function handler (req,res) { //create server
fs.readFile('../Public/test.html',function(err,data) { //read file index.html in public folder
if (err) {
res.writeHead(404,{'Content-Type': 'text/html'}); //display 404 on error
console.log(err);
return res.end("404 Not Found at Arcade.");
}
res.writeHead(200,{'Content-Type': 'text/html'});
res.write(data);
console.log("Page Data: ",data);
return res.end();
});
}
Console.log 输出:
页面数据:
解决方法
因为这就是 fs.readFile
的工作原理。
来自https://nodejs.org/api/fs.html#fs_fs_readfile_path_options_callback:
如果未指定编码,则返回原始缓冲区。
这就是你得到的:原始缓冲区内容。
如果您希望内容为 UTF-8,则需要在使用 fs.readFile
时指定该编码:
fs.readFile('../Public/test.html','utf8',function (err,data) {
//
});
,
您应该发出 HTTP 请求。这可以通过包 node-fetch 轻松完成。
const fetch = require('node-fetch');
// get the HTML
async function run() {
const res = await fetch("http://myzone.example.com/test.html");
console.log(await res.text()); // res.text() gets the response body as text/HTML
}
setImmediate(run);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。