Я использую yargs для создания приложения для создания заметок, доступ к которому осуществляется через командную строку. Когда я ввожу новый заголовок, он должен проверить и убедиться, что заголовок, подобный введенному, еще не существует, чтобы избежать дублирования. Поэтому, если дубликата нет, теоретически он должен быть равен !duplicateNote.length
, потому что внутри ничего нет.
Однако, неопределенный объект приводит к тому, что мое приложение ломается там, где оно когда-то работало. И я не могу понять это. Все было правильно.
APP.JS FILE
yargs.command({
command: 'add',
describe: 'Add a new note',
builder: {
title: {
describe: 'Note title',
demandOption: true,
type: 'string'
},
body: {
describe: 'Note body',
demandOption: true,
type: 'string'
}
},
handler(argv) {
notes.addNote(argv.title, argv.body)
}
})
NOTES.JS FILE
const addNote = (title, body) => {
const notes = loadNotes()
const duplicateNote = notes.find((note) => note.title === title)
if (!duplicateNote.length) {
notes.push({
title: title,
body: body
})
saveNotes(notes)
console.log(chalk.green.inverse('New note added!'))
} else {
console.log(chalk.bgRed('Note title taken!'))
}
}
const loadNotes= () => {
try {
const dataBuffer = fs.readFileSync('notes.json')
const dataJSON = dataBuffer.toString()
return JSON.parse(dataJSON)
} catch (e) {
return[]
}
}
module.exports = {
addNote: addNote,
removeNote: removeNote,
listNotes: listNotes,
readNote: readNote
}
Я ожидаю "Новая заметка добавлена!" чтобы войти в консоль, но вместо этого я получаю: TypeError: Cannot read property 'length' of undefined