gpt4 book ai didi

javascript - 在我的notes.js 中找不到记事本应用程序的错误

转载 作者:行者123 更新时间:2023-12-03 01:47:44 25 4
gpt4 key购买 nike

我正在学习有关 node.js 的教程,并且正在纯 Node 中创建一个记事本。我有三个文件: app.jsnotes.js 和我的 notes-data.json 文件。我的 notes.js 中出现错误,这给我带来了困难。我收到的错误是 TypeError:notes.push is not a function。我将在下面发布代码。

app.js 代码:

console.log("Starting app.js");

const _ = require('lodash');
const yargs = require('yargs');

// fetching fs module and storing in variable fs
const fs = require('fs');



// parses the same argv array that node does
const argv = yargs.argv;
// we are requiring the the notes.js file
const notes = require('./notes.js');

//console.log(process.argv);

//console.log("Process", process.argv);
console.log("Yargs" , argv);

var command = argv._[0];
console.log("Command: " , command);

if(command === "add"){
//console.log("Adding new note");
notes.addNote(argv.title , argv.body);
}
else if(command === "list")
{
console.log("listing all notes");
notes.getAll();
}
else if (command === "read")
{
console.log("now reading notes");
notes.getNote(argv.title);
}
else if(command === "remove")
{
console.log("Now removing notes");
notes.removeNotes(argv.title , argv.body);
}
else
{
console.log("command not recognized");
}

notes.js代码

console.log("starting notes.js");

const fs = require('fs');


var fetchNotes = () => {
try{
// this part will allow us to keep adding notes without
// removing whats already there
return fs.readFileSync('notes-data.json');
notes = JSON.parse(notesString);

}catch(e){
return [];

}
};

var saveNotes = (notes) => {
fs.writeFileSync('notes-data.json' , JSON.stringify(notes));

};

var addNote = (title ,body) => {
// empty array
var notes = fetchNotes();
// represents a new note
var note = {
title,
body
};

// filtering for duplicate notes
var duplicateNote = notes.filter((note) => {
return note.title === title;
});


if(duplicateNote.length === 0){
// pushing the new note to the notes
notes.push(note);
saveNotes(notes);
}
};




var getAll = () => {
console.log("Getting all Notes");
console.log('Listing Notes', process.argv[2]);
};

var getNote = (title) => {
console.log("Reading " , title)
};

var removeNotes = (title) => {
console.log("Now removing " , title);
};


module.exports = {
// this is ES6 syntax
addNote,
getAll,
getNote,
removeNotes
};

最佳答案

看起来您的 fetchNotes 函数既返回某些内容,又设置了全局注释。如果 notes 不存在,那么,您将返回一个数组...并且不对其执行任何操作。设置 notes = [] 或返回并在该函数外部设置变量。

这是在函数内设置注释的示例

notes = undefined;
function fetchNotes = () => {
<...>
notes = <result of readFileSync>
}

fetchNotes();
// notes is now the result

这是另一个

notes = undefined;
function fetchNotes = () => {
<...>
return <result of readFileSync>
}

notes = fetchNotes();
// notes is now the result

请注意,主要区别在于我必须在第二个示例中分配函数的结果,而在第一个示例中我只是设置一个全局变量 .

根据我的经验,第二个示例是更好的方法,因为它避免了全局变量(这通常是不好的)。然而,对于像这样的小程序,第一种方式可能更有意义。

希望这有帮助!

关于javascript - 在我的notes.js 中找不到记事本应用程序的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557520/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com