Как прочитать содержимое файла на консоли с помощью Nodejs

#node.js

Вопрос:

Я возвращаюсь к изучению js после многих лет перерыва, и все, что я хочу сделать, это прочитать содержимое файла на консоли с помощью Nodejs. Я нашел образец кода. Красиво и просто. Я потратил больше часа, пытаясь понять, почему он не найдет файл. Это пример прямо из документации, и я сделал его точно таким же, как в примере, чтобы отладить его. Абсолютная разница только в том, что имя джо заменено на мою пользовательскую папку.

 const fs = require('fs')

fs.readFile('/Users/gendi/test.txt', 'utf8' , (err, data) => {
  if (err) {
    console.error(err)
    return
  }
  console.log(data)
})
 

Он работает нормально, за исключением того, что он не найдет test.text. несмотря ни на что. Я получаю следующую ошибку, и независимо от того, как я форматирую путь к файлу. Ничего.

 C:Usersgendi>node readfile.js
[Error: ENOENT: no such file or directory, open 'C:Usersgenditest.txt'] {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'open',
  path: 'C:\Users\gendi\pcsSnipe\test.txt'
}
 

Вы также можете указать путь к файлу только как ‘test.txt» и получаются точно такие же результаты. в первой части сообщения об ошибке путь выглядит правильно отформатированным, но в последней строке сообщения об ошибке это не так? Прошли годы.. поэтому я знаю, что мне не хватает чего-то действительно простого. Я заверяю, что этот файл там есть!! Заранее благодарю вас и простите мою неумелость.

Комментарии:

1. Возможно , вы можете попробовать использовать относительный путь, например ./test.txt , что означает, что текстовый файл находится в том же каталоге, что и ваш readfile.js

2. Это возвращает те же результаты, что и при передаче ‘test.txt’

3. @genDis но где именно находится ваше досье? в «UsersgendipcsSnipe» или в «Usersgendi»?

4. Это было в обоих местах, я вынул pcsSnipe, чтобы упростить отладку, и добавил его позже. это будет работать до тех пор, пока вы не сохраните файл с ‘.txt’

Ответ №1:

Для fs модуля требуется точный путь к файлу, который вы хотите прочитать. Простым решением этой проблемы было бы добавить __dirname , которое вернет путь к каталогу вместе с путем к вашему файлу.

 // Define modules
const fs = require('fs');
const path = require('path');

// Read the file
fs.readFile(path.join(__dirname, '/Users/gendi/test.txt'), 'utf8' , (err, data) => {
  if (err) // If FS returned an error
    return console.error(err); // Log the error and return
  console.log(data); // If the reading was successful, log the data
});
 

Комментарии:

1. C:UsersgendiUsersgenditest.txt

2. работает только в том случае, если вы удалите». txt», но работает

3. @genDis Ваш файл на самом деле не является txt документом, вы не определили тип файла при сохранении файла.

Ответ №2:

Это работает, если вы удалите расширение файла». txt» . Я понимаю, почему это имеет значение. может быть,». » сбивает его с толку, но в этом отношении это не имеет значения. Спасибо