【发布时间】:2021-09-10 08:48:25
【问题描述】:
我正在写入异步函数内的文件:
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'
如果想知道,我确实需要在异步函数中写入文件,因为我正在使用一个包。
如何在异步函数内写入文件,然后在异步函数外读取该文件?
更新:添加完整代码。
【问题讨论】:
-
可能文件还没有被写入...显示代码,包括你何时/如何阅读它
-
顺便说一句,为什么是 IIFE
async呢?你没有在等待任何东西,也没有使用任何异步的东西,事实上,你专门使用同步写入......如果你不使用async,你的代码可能会工作 -
您不需要将
fs.writeFileSync()放入async函数中。这是一个完全同步的操作。而且,为了帮助您解决文件不存在的问题,我们需要查看其余的相关代码,包括尝试读取文件的代码以及与该代码相关的运行方式。这可能是时间问题,也可能是当前工作目录已更改,或者可能是其他东西删除了文件,或者可能是权限问题。目前,您的问题没有足够的信息来提供进一步帮助。 -
@JaromandaX 我有更多的代码,它确实使用了
async和await,用于解析RSS 提要,我简化了代码以便更容易理解。你可以查看我正在使用的包@npmjs.com/package/rss-parser -
我不明白为什么你首先需要一个文件
标签: javascript node.js asynchronous fs