我正在使用Electron和Node.js.我們開發了一個在Windows上工作正常的應用程序,並且需要將其打包到mac os中。我使用電子打包器打包應用程序,打包過程完成並生成打包。雙擊它會拋出mkdir權限被拒絕的錯誤,因爲我使用node localstorage來維護用戶本地機器上的一些設置。以某種方式mac不本地存儲在應用程序的根目錄中創建文件夾。在這件事上任何幫助都會很大。謝謝Electron Node.js節點localstorage osx mkdir權限被拒絕
回答
首先,主流程或渲染器進程中的代碼是否有問題?如果是後者,則不需要使用「node-localstorage」,因爲您可以使用渲染器的本地LocalStorage。如果你在主流程中,那麼你需要提供你自己的存儲策略,所以使用'node-localstorage'是一個可行的選擇。
無論如何,您需要仔細考慮在哪裏存儲數據;對於初學者,我們來看看Electron的渲染器進程將存儲LocalStorage數據的位置:這與操作系統有所不同,但您可以使用get and set the paths using the app
module - 有問題的路徑是userData
,在OS X上默認設置爲~/Library/Application Support/<App Name>
。 Electron使用該文件夾來保存Cookie,緩存,LocalStorage等,所以我建議使用該文件夾。 (否則,請參閱XDG默認設置,以獲得良好的默認設置)
上面的示例想要做的是將'errorLogDb'存儲在當前工作目錄中,這可能取決於您的操作系統,應用程序的安裝位置,執行它等等。
最後,在開發和測試期間區分「生產」應用程序和您的應用程序是一個好主意,因爲您可能不希望爲每個環境使用相同的存儲文件夾。在任何情況下,只需寫入'./errorLogDb'就可能會導致很多麻煩,所以我很感謝拒絕許可的錯誤。
謝謝我會嘗試更改文件夾的位置,根據您的建議,並會更新。 – Wajeeh
這一策略爲我工作:
const { LocalStorage } = require('node-localstorage');
let ls;
mb.on('ready',() => {
let prefsPath = mb.app.getPath('userData') + '/prefs';
ls = new LocalStorage(prefsPath);
loadPrefs();
});
mb.on('after-create-window',() => { /* ls... */ }
exports.togglePref =() => { /* ls... */ }
- 1. Error EACCES權限被拒絕mkdir multer node.js
- 2. Capistrano mkdir權限被拒絕
- 3. 權限被mkdir拒絕?
- 4. mkdir():權限被拒絕Laravel
- 5. mkdir()權限被拒絕codeigniter
- 6. 權限被拒絕,MKDIR在openshift
- 7. php mkdir()權限被拒絕mac
- 8. 節點 - 「mkdir/var/log/some_dir」權限被拒絕
- 9. NightmareJS&Electron on Elastic Beanstalk - 權限被拒絕
- 10. Php,功能mkdir()權限被拒絕
- 11. 的mkdir()錯誤:權限被拒絕ReduxCore
- 12. PHP命令mkdir()權限被拒絕
- 13. 消息:mkdir():權限被拒絕AWS ec2
- 14. rsync mkdir失敗權限被拒絕
- 15. Mkdir權限被拒絕php nginx
- 16. `MKDIR「:權限被拒絕(錯誤:: EACCES)
- 17. laravel的mkdir()權限被拒絕
- 18. 警告:mkdir():權限被拒絕
- 19. 當Capistrano3做的mkdir,權限被拒絕
- 20. 的mkdir權限被拒絕PHP腳本
- 21. MKDIR()權限被拒絕笨3
- 22. mkdir php與nginx的權限被拒絕
- 23. NPM無法安裝模塊,權限被mkdir拒絕
- 24. 權限被拒絕試圖在OSX
- 25. mkdir:/admin.rvm/src:安裝RVM時,權限被拒絕
- 26. 權限被拒絕
- 27. 權限被拒絕
- 28. 權限被拒絕
- 29. 流浪者vm + apache權限被拒絕mkdir()
- 30. osx - 權限被拒絕(126)使用AppleScript和管理員權限
在應用程序的根?請顯示一些代碼。 –
var LocalStorage = require('node-localstorage')。LocalStorage; var localStorage = new LocalStorage(「./ errorLogDb」); – Wajeeh
嘗試使用LocalStorage而不使用第二個命令,只需LocalStorage('akey','aValue');作爲測試。 –