我写了这个小的测试代码,试图调试我的另一个项目,发现fs.readFileSync()似乎没有回调函数,并且编码不起作用。
const fs = require("fs");
var x = fs.readFileSync(__dirname + "/file.txt", {encode: "utf8"}, () => {
console.log("Callback function?");
});
console.log(x);
预期输出: “回调功能?” file.txt的内容
但是我只是收到“”
这是怎么了?
答案 0 :(得分:2)
看看文档here。它显然没有显示任何回调,并且我猜想该调用不会起作用,因为您提供了一个函数而不是“ flags”选项,而且有点搞砸了。
此外,这也称为“ readFile SYNC ”-默认情况下,同步操作没有回调,您只需编写要在它们之后立即执行的操作,它就会在它们之后立即执行。没有时序问题,因为它们又是同步的。
适合您程序的代码为:
var x = fs.readFileSync(__dirname + "/file.txt", { encoding: "utf8" });
,并且在您需要此日志或需要数据之后,该日志将位于X变量内。
答案 1 :(得分:0)
fs.readFileSync不执行回调,因为它同步运行。它将返回文件数据。
如果您希望异步读取文件,请使用fs.readFile。
这是两个例子:
// Sync. readFile
const fileData = fs.readFileSync("some_file.txt", { encoding: "utf8"});
console.log("fileData:", fileData);
// Async. readFile
fs.readFile("some_file.txt", { encoding: "utf8"}, (err, fileData) => {
if (err) {
console.error("Error occurred:", err);
} else {
console.log("fileData:", fileData);
}
});
答案 2 :(得分:0)
我不确定您是要在Node.js中还是异步进行同步操作,但是我看到您正在使用同步功能fs.readFileSync,并尝试通过异步方法进行访问
要读取文件,可以使用fs类的readFileSync方法:
const fs = require("fs");
const output = fs.readFileSync(__dirname + "/file.txt");
console.log(output);
要异步获取数据,您将在回调中获取内容。
fs.readFile(filename, "utf8", (err, data) => {
if (err) throw err;
console.log(data)
});