Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Try语句在传递时不会抛出错误_Javascript_Node.js - Fatal编程技术网

Javascript Try语句在传递时不会抛出错误

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

在下面的代码块中,我尝试获取用户输入并将其保存在json文件中。如果插入的项已存在于文件中,则会被拒绝。这里的问题是,我的程序总是执行catch子句并生成一个空数组,尽管在某些情况下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。我在上面修复了它