如何获得电子应用程序在桌面上运行的用户docs文件夹路径。我尝试了以下方法,但得到了一个错误,即app is undefined
。
import fs from "fs";
const { app } = require("electron");
export function getFilepath() {
const filepath = app.getPath("userData") + "/settings.json";
return filepath;
}
此代码位于通过我的electron_preload.js文件导入的helpers.js文件中。
我不知道该怎么解决这个问题。
import { contextBridge, ipcRenderer } from "electron";
const helpers= require("../src/helpers");
contextBridge.exposeInMainWorld("helpers", helpers);
发布于 2022-03-03 19:03:32
由于您正在预加载环境中执行代码,因此它正在相应的BrowserWindow
的呈现程序进程中运行。但是,app
仅限于主进程的执行范围(来源),这就是代码抛出错误的原因。
您必须通过IPC公开路径。
// Main process, app.js or whatever
const { ipcMain, app } = require ("electron");
ipcMain.handle ("get-user-data-path", (event, ...args) => {
return app.getPath ("userData") + "/settings.json";
});
// In helpers.js
import fs from "fs";
const { ipcRenderer } = require("electron");
export async function getFilepath () {
return await ipcRenderer.invoke ("get-user-data-path");
}
要获得更深入的解释,请参见官方的电子IPC教程。
(顺便指出:文件系统的I/O可能应该由主进程完成,而不是呈现器。值得从安全的角度考虑。)
https://stackoverflow.com/questions/71342214
复制相似问题