2017年3月30日 星期四

[electron]我只想把 asar 檔當成正常檔案 asar file as normal file in electron

前言

這個也是一拳就解決的事。首先來說明一下情況

環境

在 electron 的 renderer process 裡,遇到 asar 檔案的開啟或讀取,會有特別狀況,例如:
1. 對它判斷是否為目錄,答案為真。
2. 對它讀取內容會出現錯誤 ‘ENOENT’。

原因在於 electron 改寫了原本 fs 模組的內容,一但遇到 asar 檔,就會視為目錄,可以對它裡面的檔案做取用。

這對於我要複製/刪除 asar 檔或是為它做 hash 都會出問題。

網路上多數的查詢都長成這樣:https://github.com/electron/electron/issues/1658

是說改用 original-fs 模組。但是它已經在 npm 上找不到了!!這不是搞笑嗎?

其他 npm 上跟 original-fs 的模組我也試了幾個,失敗。

解法

照參考的解法,在 fs 動作前,加上 process.noAsar = true,一拳。


If you want read asar file as normal file in electron process, and you can not find original-fs module, you just need one line before fs read/readstream:

process.noAsar = true

done.

參考:

https://www.bountysource.com/issues/39961418-rm-rf-doesn-t-work-if-the-directory-contains-an-asar-archive-in-electron

沒有留言:

張貼留言