为了获取特定目录的路径,Electron提供了app.getPath(name)方法,使用它我们可以获取到系统的很多文件夹路径,官方文档: https://electronjs.org/docs/api/app#appgetpathname。
app.getPath(name)
name String - name可以是下面的一些参数:
home 用户的 home 文件夹(主目录)
appData 当前用户的应用数据文件夹,默认对应:%APPDATA% Windows 中
$XDG_CONFIG_HOME or ~/.config Linux 中
~/Library/Application Support macOS 中
userData 储存你应用程序设置文件的文件夹,默认是 appData 文件夹附加应用的名称
缓存
temp 临时文件夹
exe当前的可执行文件
module The libchromiumcontent 库
desktop 当前用户的桌面文件夹
documents 用户文档目录的路径
downloads 用户下载目录的路径
music 用户音乐目录的路径
pictures 用户图片目录的路径
videos 用户视频目录的路径
logs应用程序的日志文件夹
pepperFlashSystemPlugin Pepper Flash 插件的系统版本的完成路径。
异常错误
在使用此方法过程中,我遇到了如下的错误:
TypeError: fs.existsSync is not a function
getElectronPath
node_modules/_electron@7.1.3@electron/index.js:8
5 | var pathFile = path.join(__dirname, 'path.txt');
6 |
7 | function getElectronPath() {
> 8 | if (fs.existsSync(pathFile)) {
9 | var executablePath = fs.readFileSync(pathFile, 'utf-8');
10 |
11 | if (process.env.ELECTRON_OVERRIDE_DIST_PATH) {
View compiled
(anonymous function)
node_modules/_electron@7.1.3@electron/index.js:21
18 | }
19 | }
20 |
> 21 | module.exports = getElectronPath();
View compiled
解决办法
const {remote}=require('electron')
修改为:
const {remote}=window.require('electron')
使用window.require
代替require是为了避免electron和browserify的require函数冲突。