读取JSON文件未定义(异步)

时间:2018-01-01 17:11:15

标签: javascript json node.js

您好我正在尝试使用nodejs读取JSON文件,当我尝试访问其中一个属性时,它们会以未定义的形式返回。但是,当我在console.log中时,整个文件都会显示出来。

var keyFile;

function setKeys(callback){
  const fs = require('fs');
  const filePath = '../KEY.json';
  fs.readFile(filePath, 'utf-8', (error, data) => {
    if (error){
      return console.log(error);
    }
    keyFile = data;
    callback();
  });
}

setKeys(()=>{
             console.log(keyFile) // shows JSON
             console.log(keyFile.google) //undefined
            }); 

KEY.json:

{
  "darksky": "ab",
  "google": "cd"
} 

1 个答案:

答案 0 :(得分:1)

看起来你并不是在任何地方解析它。 data将是一个字符串,因此请更改:

keyFile = data;

keyFile = JSON.parse(data);

附注:我强烈建议将数据作为参数传递给回调,而不是使用全局模块:

// *** No var keyFile; here

function setKeys(callback){
  const fs = require('fs');
  const filePath = '../KEY.json';
  fs.readFile(filePath, 'utf-8', (error, data) => {
    if (error){
      return console.log(error);
    }
    callback(JSON.parse(data)); // ***
  });
}

setKeys(keyFile => {            // ***
  console.log(keyFile.google);
});