您好我正在尝试使用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"
}
答案 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);
});