Моя структура папок такая.
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 для запуска приведенного выше сценария.
Так почему бы вам не распечатать err, что самое интересное в данном случае?
Я получаю следующую ошибку @Thallius [Ошибка: ENOENT: нет такого файла или каталога, откройте 'C:\Users\myname\projectRepo\src\html\a.html'] { errno: -4058, код: 'ENOENT' , системный вызов: 'open', путь: 'C:\\Users\\myname\\projectRepo\\src\\html\\a.html' }
Я использую версию узла 20.2.0 @Andy
Что ж, сообщение об ошибке вполне понятно: файл, который вы пытаетесь прочитать, не существует. Таким образом, либо вы ищете свой файл не в том месте, либо вы забыли создать файлы в этом месте.
@derpirscher Но оно существует. Это проблема. Есть ли проблема с тем, как я использую путь к файлу?
Нет, это не так. Если fs завершается с ошибкой NOENT, вполне можно предположить, что файл не существует, и нет смысла настаивать на том, что файл существует. Проверьте правильность написания пути и имени файла. Проверьте также, соответствует ли полный путь из ошибки вашим ожиданиям относительно пути, по которому (предположительно) расположены ваши файлы.
Обратная косая черта в патчах — всегда очень плохая идея… даже Windows обнаружила это спустя много лет :)
@Thallius В (видимом) источнике нет обратной косой черты. Но узел обычно форматирует имена файлов и пути в соответствии с форматом операционной системы, на которой он работает...
Пожалуйста, укажите stackoverflow.com/help/mcve, который может воспроизвести проблему. Существование C:\Users\myname\projectRepo\src\html\a.html не подтверждено. Просто настаивать на том, что это не работает так, как вы описываете, не поможет решить проблему. Кроме того, повсеместно плохая идея полагаться на относительные пути, поскольку они зависят от CWD. Используйте path.join(__dirname, ...) для файлов, относящихся к проекту.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


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