미리 로드된 AppData 디렉토리를 얻는 방법은 무엇입니까?
배경.js
으아악preload.js
으아악config-manager.js
으아악이것을 실행하면 이런 오류가 발생합니다.
으아악이런 현상은 '앱'이 나중에 초기화되기 때문에 발생하는 것 같아요.
저의 궁극적인 목표는 AppData 디렉터리에서 json 구성을 읽는 것입니다.
더 좋은 방법이 있다면 언제든지 알려주시기 바랍니다.
사용자는 런타임에 구성을 변경할 필요가 없습니다. 하지만 defaultConfig
의 기본값을 구성 파일에 쓸 수 있어야 합니다.
P粉5692054782024-04-07 00:44:04
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 채널 구현과 메인 스레드 또는 렌더 스레드에서 이를 전송/수신하는 방법을 이해하는 데 도움이 필요하면 새로운 질문을 해보세요.