在异步函数中写入 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);
我认为您的文件路径应该是 "output.json"
(根据 node.js 的文档)。
并且由于您没有在代码中使用 await 关键字,因此您也可以将其删除。
(() => {
data = {
value: 'value'
value_2: 'value'
}
fs.writeFileSync('output.txt', JSON.stringify(data), {
encoding: "utf8",
mode: 0o666
})
})();
我正在异步函数中写入文件:
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);
我认为您的文件路径应该是
"output.json"
(根据 node.js 的文档)。并且由于您没有在代码中使用 await 关键字,因此您也可以将其删除。
(() => {
data = {
value: 'value'
value_2: 'value'
}
fs.writeFileSync('output.txt', JSON.stringify(data), {
encoding: "utf8",
mode: 0o666
})
})();