我不知道异步/等待是如何工作的。我稍微懂一点,但我不能让它工作。

function loadMonoCounter() {
    fs.readFileSync("monolitic.txt", "binary", async function(err, data) {
       return await new Buffer( data);
  });
}

module.exports.read = function() {
  console.log(loadMonoCounter());
};

我知道,我可以使用readFileSync,但如果我这样做,我知道我永远不会理解async/await,我只会埋葬这个问题。

目标:调用loadMonoCounter()并返回一个文件的内容。

每次调用incrementMonoCounter()时,该文件都会递增(每次加载页面)。该文件包含二进制缓冲区的转储,并存储在SSD上。

无论我做什么,我都在控制台中得到一个错误或未定义。


当前回答

这将从你的文件内容中产生一个字符串,你不需要使用承诺来工作

const fs = require('fs');
const data = fs.readFileSync("./path/to/file.json", "binary");

其他回答

我通过使用Promise读取文件。对我来说,这是正确的:

const fs = require('fs')

//function which return Promise
const read = (path, type) => new Promise((resolve, reject) => {
  fs.readFile(path, type, (err, file) => {
    if (err) reject(err)
    resolve(file)
  })
})

//example how call this function
read('file.txt', 'utf8')
    .then((file) => console.log('your file is '+file))
    .catch((err) => console.log('error reading file '+err))

//another example how call function inside async
async function func() {
  let file = await read('file.txt', 'utf8')
  console.log('your file is '+file)
}
const fs = require("fs");
const util = require("util");
const readFile = util.promisify(fs.readFile);
const getContent = async () => {
let my_content;
try {
  const { toJSON } = await readFile("credentials.json");
  my_content = toJSON();
  console.log(my_content);
} catch (e) {
  console.log("Error loading client secret file:", e);
 }
};

从节点v14.0.0开始

const {readFile} = require('fs/promises');

const myFunction = async()=>{
    const result = await readFile('monolitic.txt','binary')
    console.log(result)
}

myFunction()

请看这个例子 https://www.geeksforgeeks.org/node-js-fs-readfile-method/

//包含fs模块 Var fs = require('fs'); //使用fs.readFile()方法读取文件 fs.readFile('demo.txt', (err, data) => { console.log(数据); })

你可以在下面找到我的方法: 首先,我需要fs作为fsBase,然后我把“承诺”放在fs变量内。

const fsBase = require('fs');
const fs = fsBase.promises

const fn = async () => {
    const data = await fs.readFile('example.txt', 'utf8');
    console.log(data);
};

fn();