我想在本地项目文件夹中生成一个.json文件。我想将提取API调用响应(是一个对象数组)保存到硬盘上的.json文件中。这是我的代码:
const fs = require('fs');
导出默认函数getdirectory(令牌){
return fetch(url, {
headers: {Authorization: "Bearer " + token}
})
.then((response) => response.json())
.catch((err) =>{
console.log("ERORRRRRRRR @@@@@@" + err);
})
.then((response) => {
//console.log(response);
var jsoncontent = JSON.stringify(response);
//console.log(jsoncontent);
fs.writeFileSync('files-to-cache.json', jsoncontent, function(err) {
if (err)
{console.log("EROROROROROR ****" + err);}
else
{ return response;}
});
// return response;
})
.catch((err) =>{
console.log("ERORRRRRRRR $$$$$$" + err);
})
};
当我在vs代码中运行代码时,出现以下错误:
未定义不是函数(在'... fs.writeFileSync ...'附近)
似乎发生这种情况是因为在创建json文件时(异步)数据尚未准备就绪。一些网站建议使用setTimeOut函数或sf.writeFileSync而不是sf.writeFile。我都尝试过,但仍然行不通。 您能帮我解决这个问题吗? 非常感谢
答案 0 :(得分:1)
您使用的写入文件版本不正确,有两种不同的类型,请参见下文:
第一个是writeFileSync,它是同步的,它将阻塞线程,这意味着您的脚本在完成之前无法继续,但最重要的是它不接受回调...
尝试以下方法:
fs.writeFile('data.json', jsonData, 'utf8', (err) => {
if (err) throw err
console.log('File created!`)
})
希望这会有所帮助。