Как я могу правильно найти файл .txt и прочитать его содержимое с помощью NodeJS - PullRequest
0 голосов
/ 08 ноября 2019

Я создаю приложение Electron и у меня есть файл logs.txt, содержимое которого я хочу прочитать и поместить на HTML-страницу. Я использую NodeJS и модуль "fs", но следующий код выдает ошибку "Uncaught Error: ENOENT: нет такого файла или каталога ..."

Я думаю, что проблема может быть в ссылкеэтогоВот код ниже:

const fs = require('fs')

fs.readFile('file://' + __dirname + '/logs.txt', function(err, data) {
    if (err) throw err;
    document.getElementById("main").innerHTML = data;
});

В ошибке он показывает мне точное местоположение файла. Вот ошибка, которую я получаю:

Uncaught Error: ENOENT: no such file or directory, open 'file:///Users/MY_USER_ACCOUNT/files/code/git/MY_APP/src/usr/logs.txt'

Именно здесь находится файл logs.txt, но по какой-то причине он все еще говорит, что такого файла там нет.

I 'м на Mac, если это уместно.

Спасибо.

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Использовать путь, а не URL

fs.readFile ожидает путь к файлу, если в качестве аргумента передан string.

Вы передаете ему file:// URL string вместо. Удалить file://.

Передать кодировку содержимого файла

Вы также хотите передать кодировку файла в fs.readFile:

const fs = require('fs')
fs.readFile(__dirname + '/logs.txt', 'utf-8', function(err, data) {
    if (err) throw err;
    document.getElementById("main").innerHTML = data;
});

(Вы уверены, что хотитечитать logs.txt относительно местоположения вашего исходного файла JavaScript?)

Использовать обещания

const fsPromises = require('fs').promises;
const data = await fs.readFile(__dirname + '/logs.txt', 'utf-8')
document.getElementById("main").innerHTML = data;
0 голосов
/ 08 ноября 2019

Если вы используете формат file://, вам нужно создать объект URL для передачи в fs.readFile(), а не просто передать его в виде строки:

const fileUrl = new URL('file://' + __dirname + '/logs.txt');
fs.readFile(fileUrl, function(err, data) {
  if (err) throw err;
  document.getElementById("main").innerHTML = data;
});

См. документация здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...