您好,我尝试使用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"
}

最佳答案

看起来好像您在任何地方都无法解析它。 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);
});

10-06 04:41