最近我在開發一個小工具,打包后出現
Uncaught Error: ENOENT, cnblog-tool.json not found in D:\makalo-cnblog-tool\resources\app.asar

一看要寫入的路徑,我發現路徑不對,應該就是這個問題
原因分析
開發環境的路徑和生產環境的路徑不一致
解決辦法
既然知道了原因,那就好解決,既然環境不一樣,那我首先得知道如何判斷環境,找到官網
返回一個
Boolean值,如果應用已經打包,返回true,否則返回false。 對於大多數應用程序,此屬性可用於區分開發和生產環境。
現在知道了如何判斷環境,那如何根據環境獲取路徑呢?
我原來用的
app.getAppPath()
現在測試得出這個是開發環境的,那生產環境的路徑怎么獲取呢?仔細看api
name字符串-您可以通過名稱請求以下路徑:
home用戶的 home 文件夾(主目錄)appData每個用戶的應用程序數據目錄,默認情況下指向:
%APPDATA%Windows 中$XDG_CONFIG_HOME或在~/.configLinux中~/Library/Application SupportmacOS 中
userData儲存你應用程序設置文件的文件夾,默認是appData文件夾附加應用的名稱
緩存
temp臨時文件夾
exe當前的可執行文件
moduleThelibchromiumcontent庫
desktop當前用戶的桌面文件夾
documents用戶文檔目錄的路徑
downloads用戶下載目錄的路徑
music用戶音樂目錄的路徑
pictures用戶圖片目錄的路徑
videos用戶視頻目錄的路徑
recent用戶最近文件的目錄(僅Windows)。
logs應用程序的日志文件夾
crashDumps故障轉儲的存儲目錄。返回
String-與關聯的特殊目錄或文件的路徑name。失敗時,Error拋出。如果
app.getPath('logs')在沒有先調用app.setAppLogsPath()被調用的情況下被調用,則將創建一個默認日志目錄,該目錄等同於app.setAppLogsPath()不帶path參數的調用。
其中有個exe當前的可執行文件,應該就是這個
所以路徑的正確寫法,應該是
路徑的正確寫法
該寫法能獲取到應用程序的根目錄
//當前應用的目錄
const appPath = app.isPackaged ? path.dirname(app.getPath('exe')) : app.getAppPath();
