Чтение файла
Часть раздела Основы Node.js путешествия по Node.js на Coddy. Урок 12 из 33.
При каждом запуске появляются одни и те же три заметки, потому что они хранятся только в памяти.
readFileSync(path, 'utf8') из node:fs считывает файл как строку. Файл заметок содержит JSON — текстовый формат данных, записанных в виде массивов и объектов JavaScript; JSON.parse преобразует этот текст в массив. При чтении отсутствующего файла возникает ошибка ENOENT, поэтому сначала проверьте его наличие с помощью existsSync. В примере используется condition ? a : b: выражение возвращает a, если условие истинно, и b, если оно ложно.
import { existsSync, readFileSync } from 'node:fs';
const scores = existsSync('scores.json')
? JSON.parse(readFileSync('scores.json', 'utf8'))
: [];
console.log(scores.length);Без 'utf8' вы получите Buffer — исходные байты файла, а не строку.
Задание
ЛегкоНа этом шаге открывается подготовленный для курса проект инструмента командной строки для заметок, а не файлы вашего проекта из урока CommonJS Modules (включая legacy/stats.cjs). Предыдущая работа остаётся в своём уроке. Прочитайте предоставленные файлы, прежде чем редактировать store.js. В этой копии есть все команды, которые мы уже добавили, а также новая команда clear.
Сейчас при каждом запуске используются одни и те же три заметки, записанные в store.js. Вместо этого заметки должны загружаться из файла: notes.json, который можно открыть в разделе «Файлы».
- В
store.jsзамените фиксированный список из трёх заметок. Массивnotesв хранилище должен содержать массив, сохранённый вnotes.json: прочитайте файл как текст, а затем преобразуйте текст JSON в массив. - Если файла
notes.jsonнет, хранилище должно начинаться с пустого массива, а не завершать работу с ошибкой. Перед чтением проверьте, существует ли файл.
В файле notes.json изначально есть две заметки, поэтому команда node notes.js list выводит:
Notes for you
1. Buy milk
2. Call AdaЕсли файла notes.json нет, команда выводит:
Notes for you
No notes yetИзмените только store.js. В notes.js уже предусмотрен вывод No notes yet, когда хранилище пустое.
Попробуйте: введите list в поле после $ node notes.js и нажмите Enter. Вы увидите две заметки из файла. Затем введите clear. Эта команда уже есть в notes.js: она удаляет notes.json и выводит Deleted notes.json. Снова введите list: вы увидите No notes yet. Прежде чем нажать «Проверить», нажмите «Сбросить файлы», чтобы восстановить notes.json, поскольку он нужен для проверок.
Попробуйте сами
// Загружайте заметки из notes.json вместо этого списка.
const store = {
notes: ['Buy milk', 'Call Ada', 'Water the plants'],
add(text) {
this.notes.push(text);
return this.notes.length;
},
};
export default store;
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы Node.js
Потренируйтесь самостоятельно: Песочница Express