미리 로드된 AppData 디렉토리를 얻는 방법은 무엇입니까?
배경.js
으아악preload.js
으아악config-manager.js
으아악이것을 실행하면 이런 오류가 발생합니다.
으아악이런 현상은 '앱'이 나중에 초기화되기 때문에 발생하는 것 같아요.
저의 궁극적인 목표는 AppData 디렉터리에서 json 구성을 읽는 것입니다.
더 좋은 방법이 있다면 언제든지 알려주시기 바랍니다.
사용자는 런타임에 구성을 변경할 필요가 없습니다. 하지만 defaultConfig
의 기본값을 구성 파일에 쓸 수 있어야 합니다.
app.getPath()
方法仅在应用程序“就绪”后才可用。使用app.on('ready' () => { ... });
'준비' 이벤트를 감지합니다. 자세한 내용은 Electron의 이벤트: 'ready' 이벤트를 참조하세요.사용자 소개
preload.js
脚本,直接在其中包含函数有时会使内容难以阅读和理解(即使它仅由require
实现)。目前,该文件没有关注点分离。 IE:您的“配置”功能混合在preload
脚本中。如果您希望分离问题,那么您应该从preload.js
文件中重构您的“配置”代码,并将其放在自己的文件中。这样,您的preload.js
파일은 IPC 채널을 구성하고 관련 데이터(있는 경우)를 전송하는 데만 사용됩니다.자,
app.getPath('appData')
문제를 해결하는 방법을 살펴보겠습니다.당신의
main.js
文件中,检测您的应用程序何时“就绪”,然后通过您的config-manager.js
文件获取appData
디렉토리에 있습니다.
으아악main.js
(메인 스레드)귀하의
config-manager.js
文件中,我已将您的“路径”变量移至loadConfig()
函数范围,因为它们仅由该函数使用。如果您需要将它们公开以供文件中其他位置使用,则需要将它们移回loadConfig()
기능 범위를 벗어났습니다.ElectronApp.getPath('appData')
에 대한 참조를loadConfig()
함수로 옮겼습니다. 이 함수는 애플리케이션이 "준비"된 후ElectronApp.getPath('appData')
的引用移至loadConfig()
函数中,因为在应用程序“就绪”后从main.js
에서 호출되기 때문입니다.도우미 기능
pathExists()
을 추가한 이유는 해당 구현이 여러 번 사용되기 때문입니다.드디어
getConfig()
函数,以便在需要时从应用程序主线程中的任何位置轻松获取配置对象(只要将其包含在需要使用它的文件中即可)。IE:let appConfig = require('config-manager')
를 추가했습니다.
으아악config-manager.js
(메인 스레드)일반적인
으아악preload.js
스크립트는 다음과 같습니다.IPC 채널 구현과 메인 스레드 또는 렌더 스레드에서 이를 전송/수신하는 방법을 이해하는 데 도움이 필요하면 새로운 질문을 해보세요.