我正在使用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');作为测试。 –