在异步函数中写入 Node.JS 中的文件

Writing to a file in Node.JS inside an async function

我正在异步函数中写入文件:

let Parser = require('rss-parser');
const fs = require('fs')

function parse(feed_url) {
    let parser = new Parser();
    (async () => {
        let feed = await parser.parseURL(feed_url);
        fs.writeFileSync('./output.json', JSON.stringify(feed), {
            encoding: "utf8",
            mode: 0o666
          })
    })();
    const data = fs.readFileSync('./output.json', 'utf8')
    fs.unlinkSync('./output.json');
    return data
}

console.log(parse('https://www.reddit.com/.rss'))

我现在得到错误:

Error: ENOENT: no such file or directory, open './output.json'

如果想知道,我确实需要在异步函数中写入文件,因为我正在使用一个包。

如何在异步函数内写入文件,然后在异步函数外读取该文件?

更新:添加完整代码。

使函数解析异步

那你的代码就简单了

async function parse(feed_url) {
    let parser = new Parser();
    let feed = await parser.parseURL(feed_url);
    fs.writeFileSync('./output.json', JSON.stringify(feed), {
        encoding: "utf8",
        mode: 0o666
      })
    const data = fs.readFileSync('./output.json', 'utf8')
    fs.unlinkSync('./output.json');
    return data
}

parse('https://www.reddit.com/.rss').then(console.log);

当然...为什么需要文件!!!!

async function parse(feed_url) {
    let parser = new Parser();
    let feed = await parser.parseURL(feed_url);
    return JSON.stringify(feed)
}

parse('https://www.reddit.com/.rss').then(console.log);
  1. 我认为您的文件路径应该是 "output.json"(根据 node.js 的文档)。

  2. 并且由于您没有在代码中使用 await 关键字,因此您也可以将其删除。

(() => {
        data = {
           value: 'value'
           value_2: 'value'
        }
        fs.writeFileSync('output.txt', JSON.stringify(data), {
            encoding: "utf8",
            mode: 0o666
        })
})();