亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Electron 中掛鉤來自 javascript 的文件請求以生成正確的路徑?

如何在 Electron 中掛鉤來自 javascript 的文件請求以生成正確的路徑?

慕慕森 2023-03-18 17:26:53
我正在創建一個 Electron 應用程序,并在此過程中嘗試使用一些現有的 javascript 和其他文件(css 和其他資源)。我的代碼分布在多個包中,每個包都包含各種這些文件。在 Electron 之外,這些文件將由服務器提供,該服務器提供從文件的平面列表到每個文件的路徑的映射,我正在嘗試在 Electron 的“后端”中實現類似的“服務器端”功能,如果有這樣的事情。由于 Electron 從協議中獲取這些文件,file://因此它找不到其中的大部分文件,因為所有內容都相對于當前 javascript 文件的路徑進行解析,并且這些文件彼此不了解,因此無法指定硬編碼路徑。Electron 中是否有某種機制來掛鉤文件請求,以便我可以提供它查看的路徑?在我的服務器端代碼中,我做了一些事情,我有一個對象將文件名映射到它們所在的路徑,我覺得解決方案同樣是攔截請求并告訴 Electron 在何處查找每個文件。我發現了這個問題,但那里提供的解決方案對我不起作用,因為我的網絡應用程序有點過于動態,并且請求來自代碼深處,而不是我可以捕獲的某些用戶界面元素。
查看完整描述

1 回答

?
智慧大石

TA貢獻1946條經驗 獲得超3個贊

您可以通過攔截文件協議處理程序來完成此操作。如果您已將文件映射設置為如下對象:


files = {

    "file1.js": "/path/to/file1.js",

    "file2.js": "/path/to/file2.js",

    // etc.

}

然后在 createWindow 函數中,您將在實例化新的 BrowserWindow 后立即插入此代碼:


protocol.interceptFileProtocol("file", (req, cb) => {

    var file = req.url.split("/")

    file = file[file.length-1]

    if (files[file]) {

        console.log(`intercepting ${file} => ${files[file]}`)

        cb({path:files[file]})

    }

})

注意:您從需要電子中獲得的protocol參考資料const,例如:


const {app, BrowserWindow, protocol} = require("electron")

此代碼假定文件名是唯一的,并且是路徑中唯一重要的部分。因此,例如,無論代碼認為“file1.js”位于什么路徑,在上面的示例中它將被重定向到/path/to/file1.js. 如果請求的文件不存在,則行為未定義,可能不會加載任何內容。


查看完整回答
反對 回復 2023-03-18
  • 1 回答
  • 0 關注
  • 178 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號