#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.js2. Это возвращает те же результаты, что и при передаче ‘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» . Я понимаю, почему это имеет значение. может быть,». » сбивает его с толку, но в этом отношении это не имеет значения. Спасибо