You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron使用electron-forge打包后运行无法创建log目录报ENOENT错误

问题原因

错误的核心诱因如下:

  • 开发模式下应用的运行工作目录是你的项目根目录,你对该路径有读写权限,使用相对路径log创建目录不会触发异常
  • Mac系统下打包后的.app应用默认运行时的工作目录为应用包内部的只读资源路径/Applications/[应用名].app/Contents/Resources/,普通用户无该路径的写入权限,直接用相对路径创建log目录会触发写入失败报错
解决方案

将日志存储路径修改为Electron提供的用户级可写目录即可,操作步骤如下:

  1. 在主进程中引入app模块,使用app.getPath('userData')获取当前应用专属的用户数据目录,该目录默认路径为~/Library/Application Support/[你的应用名],用户默认拥有完整读写权限
  2. 将日志目录的绝对路径拼接为该路径下的子目录,示例代码:
const { app } = require('electron');
const path = require('path');
const fs = require('fs');

// 生成合法可写的日志目录绝对路径
const logDir = path.join(app.getPath('userData'), 'log');
// 递归创建目录,避免上级目录不存在时报错
fs.mkdirSync(logDir, { recursive: true });

注意必须给mkdirSync添加recursive: true参数,避免路径层级缺失时抛出异常

  1. 如果你使用第三方日志库(如electron-log),直接修改日志存储路径配置即可,示例:
const log = require('electron-log');
log.transports.file.resolvePath = () => path.join(app.getPath('userData'), 'log', 'main.log');
验证步骤
  • 重新执行electron-forge package命令打包
  • 安装后启动应用,打开~/Library/Application Support/[你的应用名]/log目录即可看到生成的日志文件

内容的提问来源于stack exchange,提问作者Michael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 23:45:03