Невозможно прочитать файл с помощью fs.readFile в node.js

Моя структура папок такая.

src
  |html
  |generate.js

Я пытаюсь создать text folder так же, как html folder в src, читая файлы в формате html. Например, если a.html и b.html находятся в папке html, я хочу создать файлы a.txt и b.txt в текстовой папке, прочитав файлы a.html and b.html.

Скрипт в generate.js ниже.

const fs = require("fs");
const filesArray = ['html/a.html', 'html/b.html'];

filesArray.forEach((item) => {
     fs.readFile(item, (err, data) => {
       console.info(item, data);
     });
});

когда я печатаю data внутри функции fs.readfile, она возвращает неопределенное значение.

И когда я пытаюсь напечатать ошибку, получаю следующую ошибку.

[Error: ENOENT: no such file or directory, open 'C:\Users\myname\projectRepo\src\html\a.html'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'open',
  path: 'C:\\Users\\myname\\projectRepo\\src\\html\\a.html'
}

Я запускаю команду nodegenerate.js для запуска приведенного выше сценария.

Я не могу воспроизвести эту проблему (узел 20.10.0). Я получаю строку массива и данные. Обратите внимание, я импортировал fs, которого вы не показываете в своем примере, но я предполагаю, что вы это делаете?

Andy 01.04.2024 09:39

Так почему бы вам не распечатать err, что самое интересное в данном случае?

Thallius 01.04.2024 09:52

Я получаю следующую ошибку @Thallius [Ошибка: ENOENT: нет такого файла или каталога, откройте 'C:\Users\myname\projectRepo\src\html\a.html'] { errno: -4058, код: 'ENOENT' , системный вызов: 'open', путь: 'C:\\Users\\myname\\projectRepo\\src\\html\\a.html' }

user2613946 01.04.2024 10:24

Я использую версию узла 20.2.0 @Andy

user2613946 01.04.2024 10:27

Что ж, сообщение об ошибке вполне понятно: файл, который вы пытаетесь прочитать, не существует. Таким образом, либо вы ищете свой файл не в том месте, либо вы забыли создать файлы в этом месте.

derpirscher 01.04.2024 10:34

@derpirscher Но оно существует. Это проблема. Есть ли проблема с тем, как я использую путь к файлу?

user2613946 01.04.2024 10:35

Нет, это не так. Если fs завершается с ошибкой NOENT, вполне можно предположить, что файл не существует, и нет смысла настаивать на том, что файл существует. Проверьте правильность написания пути и имени файла. Проверьте также, соответствует ли полный путь из ошибки вашим ожиданиям относительно пути, по которому (предположительно) расположены ваши файлы.

derpirscher 01.04.2024 10:37

Обратная косая черта в патчах — всегда очень плохая идея… даже Windows обнаружила это спустя много лет :)

Thallius 01.04.2024 10:40

@Thallius В (видимом) источнике нет обратной косой черты. Но узел обычно форматирует имена файлов и пути в соответствии с форматом операционной системы, на которой он работает...

derpirscher 01.04.2024 10:42

Пожалуйста, укажите stackoverflow.com/help/mcve, который может воспроизвести проблему. Существование C:\Users\myname\projectRepo\src\html\a.html не подтверждено. Просто настаивать на том, что это не работает так, как вы описываете, не поможет решить проблему. Кроме того, повсеместно плохая идея полагаться на относительные пути, поскольку они зависят от CWD. Используйте path.join(__dirname, ...) для файлов, относящихся к проекту.

Estus Flask 01.04.2024 12:40
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
10
100
0
Перейти к ответу Данный вопрос помечен как решенный

Другие вопросы по теме