我正在构建一个Electron应用程序,并且我有一个logs.txt文件,我想读取其中的内容并将其放在HTML页面上。我正在使用NodeJS和“ fs”模块,但是以下代码给了我错误“未捕获的错误: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文件所在的位置,但是由于某种原因,它仍然表示那里没有此类文件。
如果相关,我在Mac上。
谢谢。
答案 0 :(得分:1)
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;
});
(您确定要相对于JavaScript源文件的位置阅读logs.txt
吗?)
const fsPromises = require('fs').promises;
const data = await fs.readFile(__dirname + '/logs.txt', 'utf-8')
document.getElementById("main").innerHTML = data;
答案 1 :(得分:0)
如果您使用的是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;
});
请参阅文档here