微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么 Node.js javascript 函数 res.write(data) 在我记录时输出数字?

如何解决为什么 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 举报,一经查实,本站将立刻删除。