首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Vue3电子获取用户文档文件夹

Vue3电子获取用户文档文件夹
EN

Stack Overflow用户
提问于 2022-03-03 18:41:52
回答 1查看 190关注 0票数 0

如何获得电子应用程序在桌面上运行的用户docs文件夹路径。我尝试了以下方法,但得到了一个错误,即app is undefined

代码语言:javascript
运行
复制
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文件中。

我不知道该怎么解决这个问题。

代码语言:javascript
运行
复制
import { contextBridge, ipcRenderer } from "electron";
const helpers= require("../src/helpers");

contextBridge.exposeInMainWorld("helpers", helpers);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-03 19:03:32

由于您正在预加载环境中执行代码,因此它正在相应的BrowserWindow的呈现程序进程中运行。但是,app仅限于主进程的执行范围(来源),这就是代码抛出错误的原因。

您必须通过IPC公开路径。

代码语言:javascript
运行
复制
// 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";
});
代码语言:javascript
运行
复制
// 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可能应该由主进程完成,而不是呈现器。值得从安全的角度考虑。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71342214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档