Node.js 为什么fs.readFile数据的console.log不记录字符串?

Node.js 为什么fs.readFile数据的console.log不记录字符串?,node.js,Node.js,我有以下代码: http = require("http"); fs = require("fs"); fs.readFile("file.txt", function(err, data) { console.log(data); }); txt文件的内容是“helloworld”,所以我希望“helloworld”会被记录到控制台上。相反,我得到了“缓冲区”和一些十六进制数。这是为什么?如果您没有将编码类型作为fs.readFile()选项的一部分传递,那么它将为您提供一个缓冲区对象

我有以下代码:

http = require("http");
fs = require("fs");

fs.readFile("file.txt", function(err, data) {
  console.log(data);
});

txt文件的内容是“helloworld”,所以我希望“helloworld”会被记录到控制台上。相反,我得到了“缓冲区”和一些十六进制数。这是为什么?

如果您没有将编码类型作为
fs.readFile()
选项的一部分传递,那么它将为您提供一个缓冲区对象,而不是作为数据的字符串。如果指定的编码适用于字符串,如
'utf8',
,则它将为您提供一个字符串

const fs = require("fs");

fs.readFile("file.txt", 'utf8', function(err, data) {
  if (err) {
      console.log(err);
  } else {
      console.log(typeof data);    // "string"
      console.log(data);
  }
});
因此,基本上编码是一个可选参数,如果不传递,那么您将获得一个缓冲区对象作为数据,您可以从中提取字符串,但是最好传递您希望从文件中的数据中传递的任何编码

注意:这在中有非常清楚的解释

另外,请正确声明变量
fs
http

可能重复的