Javascript Try语句在传递时不会抛出错误
在下面的代码块中,我尝试获取用户输入并将其保存在json文件中。如果插入的项已存在于文件中,则会被拒绝。这里的问题是,我的程序总是执行catch子句并生成一个空数组,尽管在某些情况下json文件存在并且可以读取Javascript Try语句在传递时不会抛出错误,javascript,node.js,Javascript,Node.js,在下面的代码块中,我尝试获取用户输入并将其保存在json文件中。如果插入的项已存在于文件中,则会被拒绝。这里的问题是,我的程序总是执行catch子句并生成一个空数组,尽管在某些情况下json文件存在并且可以读取 const fs = require('fs'); const loadFile = () => { try{ const stringData = fs.readFileSync('note-data.json', 'utf8'); return [JSON
const fs = require('fs');
const loadFile = () => {
try{
const stringData = fs.readFileSync('note-data.json', 'utf8');
return [JSON.parse(stringData)];
} catch (e) {
return [];
}
};
const writeFile = (notes) => {
fs.writeFileSync('note-data.json', JSON.stringify(notes));
};
const addNote = (title, body) => {
let notes = loadFile();
const note = {
title,
body
}
console.log(notes);
const duplicateArray = notes.filter((note) => note.title === title);
console.log(duplicateArray);
if(duplicateArray.length === 0){
notes.push(note);
writeFile(notes);
}
};
命令行输入如下所示:
node app.js add --title=Greeting --body="hello"
node app.js add --title=Greeting2 --body="hello2"
输出为:
[{"title":"Greeting","body":"hello"}]
输出应为:
[{"title":"Greeting","body":"hello"}, {"title":"Greeting2","body":"hello2"}]
我的问题是这个错误发生在哪里?打字错误
fs.writeFileSync('note-date.json', JSON.stringify(notes));
文件“note data.json”不是吗?试着在catch block中打印错误吗?仅供参考,每次加载数据时,执行
[json.parse(stringData)]
都会不断地将数据包装到一个新数组中,即使您已经将其保存为数组,这意味着它将执行以下操作:[]
,[[[[]]]
,[[[[]]]]][[[[]]
我有点困惑。JSON.parse()的结果类型是字符串序列还是字符串数组?是parse()的结果
是字符串化的任何类型,即对象、数组等。因此,您已经在字符串化数组并保存它。因此,当您重新加载它时,您已经有了一个数组,因此您不需要将其包装在数组中:[JSON.parse(stringData)]
所以只需返回JSON.parse(stringData)
这是我的打字错误。程序中是note-data.josn。我在上面修复了它