如何使用fs.writeFile从访存API调用响应中创建.json文件

时间:2018-11-15 07:37:06

标签: javascript

我想在本地项目文件夹中生成一个.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。我都尝试过,但仍然行不通。 您能帮我解决这个问题吗? 非常感谢

1 个答案:

答案 0 :(得分:1)

您使用的写入文件版本不正确,有两种不同的类型,请参见下文:

第一个是writeFileSync,它是同步的,它将阻塞线程,这意味着您的脚本在完成之前无法继续,但最重要的是它不接受回调...

尝试以下方法:

  fs.writeFile('data.json', jsonData, 'utf8', (err) => {
    if (err) throw err
    console.log('File created!`)
  })

希望这会有所帮助。