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