簡體   English   中英

如何正確找到 a.txt 文件並使用 NodeJS 讀取它的內容

[英]How can I correctly find a .txt file and read it's contents using NodeJS

我正在構建一個 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 上。

謝謝你。

使用路徑,而不是 URL

如果將string作為參數傳遞, fs.readFile需要一個文件路徑。

您正在向它傳遞一個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源文件的位置的 logs.txt 嗎?)

使用承諾

const fsPromises = require('fs').promises;
const data = await fs.readFile(__dirname + '/logs.txt', 'utf-8')
document.getElementById("main").innerHTML = data;

如果您使用的是file://格式,則需要創建一個URL object 像這樣傳遞給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;
});

請參閱此處的文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM