我正在按照Andrew Mead的“学习NodeJS开发”中的教程创建一个notes
应用程序。
我有两个.js
文件,如下所示:
app.js:
const fs = require('fs');
const notes = require('./notes');
const yargs = require('yargs');
const argv = yargs.argv;
// fs.writeFileSync('notes-data.json', JSON.stringify(notes.addNote(argv.title, argv.body)));
var data = notes.addNote(argv.title, argv.body);
console.log(argv.title, '*****', argv.body);
var notesString = fs.readFileSync('./notes-data.json');
var myNotes = JSON.parse(notesString);
console.log(myNotes);
notes.js:
console.log('Starting notes.js');
const fs = require('fs');
var addNote = (title, body) => {
var notes = [];
var note = {
title,
body
};
//debugger;
notes.push(note);
//debugger;
fs.writeFileSync('notes-data.json', JSON.stringify(note));
};
module.exports = {
addNote
};
现在,按照书中的内容,当我运行两个命令时:
节点app.js添加--title = oldSecret1 --body =“哈哈”
节点app.js添加--title = oldSecret2 --body =“ Haha”
然后,notes
数组应该有两个条目-一个用于oldSecret1
,另一个用于oldSecret2
。但是,在我的情况下,数组只有一个条目-我当前正在运行的命令的条目(oldSecret1
或oldSecret2
)。我先前运行的oldSecret1
的数据未保留,即,当我运行oldSecret2
的命令时,该数据不在数组中。
我确定我犯了一些愚蠢的错误。有人可以指出吗?我不确定该问题是否与持久性有关,因为我认为这两个命令是不同“会话”的一部分?
谢谢!
编辑:
请注意,两个建议的选项-按照C ++ / Java范例将notes[]
的声明移出函数之外不起作用。此外,使用try-catch块也不起作用。我认为错误notes.push(note) is not a function
是可以理解的,因为我认为require()
返回了一个我们不能直接push
无法访问的对象。
将不胜感激。谢谢!