Menu
CoddyTech

Чтение файла

Часть раздела Основы 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 — исходные байты файла, а не строку.

challenge icon

Задание

Легко

На этом шаге открывается подготовленный для курса проект инструмента командной строки для заметок, а не файлы вашего проекта из урока CommonJS Modules (включая legacy/stats.cjs). Предыдущая работа остаётся в своём уроке. Прочитайте предоставленные файлы, прежде чем редактировать store.js. В этой копии есть все команды, которые мы уже добавили, а также новая команда clear.

Сейчас при каждом запуске используются одни и те же три заметки, записанные в store.js. Вместо этого заметки должны загружаться из файла: notes.json, который можно открыть в разделе «Файлы».

  1. В store.js замените фиксированный список из трёх заметок. Массив notes в хранилище должен содержать массив, сохранённый в notes.json: прочитайте файл как текст, а затем преобразуйте текст JSON в массив.
  2. Если файла 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;
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы Node.js

Потренируйтесь самостоятельно: Песочница Express