我的问题的答案可能很明显,但是我找不到。
我实际上想在nodeJS应用上读取json文件。
var accRead = fs.readFile(__dirname + '/accounts.JSON', { endoding: 'utf8' }, function(err, data) {
if (err) throw err
if (data) return JSON.parse(data)
})
我写了这个,我不明白为什么它返回未定义,我已经检查了Json文件,并且有一些数据。
答案 0 :(得分:1)
尝试以下方法:
fs.readFile(__dirname + '/accounts.JSON', 'utf8', function read(err, dataJSON) {
if (err) {
// handle err
}
else {
// use/process dataJSON
}
})
正如注释中已经提到的,您也可以使用函数的同步版本:fs.readFileSync。.
您还可以将其打包到一个异步函数中,例如:
function readJSONfile() {
fs.readFile(__dirname + '/accounts.JSON', 'utf8', function read(err, dataJSON) {
if (err) {
return false
}
else {
return dataJSON
}
})
}
async function () {
let promise1 = new Promise((resolve, reject) => {
resolve(readJSONfile())
});
let result = await promise1; // wait till the promise resolves (*)
if (result == false) {
// handle err
}
else {
// process/use data
}
}
答案 1 :(得分:1)
尝试以下操作:
const accounts = () => fs.readFileSync(__dirname + '/accounts.json', { endoding: 'utf8'})
const accRead = JSON.parse(accounts())
/*Logging for visualization*/
console.log(accRead)
答案 2 :(得分:0)
您可以创建一个承诺,并使用async / await来实现它。
假设您的文件结构如下:
在accounts.json中,您具有以下内容:
[
{
"id": 1,
"username": "test1",
"password": "test1"
},
{
"id": 2,
"username": "test2",
"password": "test2"
},
{
"id": 3,
"username": "test3",
"password": "test3"
}
]
您的index.js文件应为:
// importing required modules
const fs = require('fs');
const path = require('path');
// building the file path location
const filePath = path.resolve(__dirname, 'accounts.json');
// creating a new function to use async / await syntax
const readFile = async () => {
const fileContent = await new Promise((resolve, reject) => {
return fs.readFile(filePath, { encoding: 'utf8' }, (err, data) => {
if (err) {
return reject(err);
}
return resolve(data);
});
});
// printing the file content
console.log(fileContent);
}
// calling the async function to get started with reading file etc.
readFile();
答案 3 :(得分:0)
从节点v0.5.x开始,您可以像需要JSON
文件一样要求JS
。
var someObject = require('./awesome_json.json')
在ES6中:
import someObject from ('./awesome_json.json')
如果您需要字符串,只需使用JSON.stringify(someObject)