电子/节点文件路径位置

时间:2019-04-04 15:54:58

标签: node.js electron

我有一个电子应用程序,该应用程序正在使用electron-log来为该应用程序创建一些调试信息。默认情况下,它将每个模块的文件保存到以下位置:

**on macOS:** ~/Library/Logs/<app name>/log.log

**on Windows:** %USERPROFILE%\AppData\Roaming\<app name>\log.log

我已经在菜单中的“查看调试信息”中添加了一个选项。我的目标是将此日志读入文本区域(在渲染器上),以便他们可以在需要时提供支持。

在渲染器中,我正在使用fs来访问文件系统,但是在process.env中找不到指向这些位置的任何内容,因此我认为它们是自定义的吗?

我是否缺少一个变量,其中包含操作系统上的这些路径?

const fs = require('fs');

if(process.platform == 'darwin'){
    // Path is ~/Library/Logs/<app name>/log.log
    // Read the file into the textarea
}else{
    // Path is %USERPROFILE%\AppData\Roaming\<app name>\log.log
    // Read the file into the textarea
}

2 个答案:

答案 0 :(得分:0)

我认为您可以使用app.getPath(...)

import { app } from "electron";
let logFileName;

// If, darwin; PATH is: ~/Library/Logs/<app name>/log.log
if(process.platform == 'darwin'){
  logFileName = app.getPath("logs") + "/log.log",
} else if(process.platform == 'win32'){ {
  logFileName = app.getPath("userData") + "/log.log",
} else {
  // Handle other supported platforms ('aix','freebsd', 'linux', 'openbsd', 'sunos')
}

fs.readFile(logFileName, function read(err, data) {
  if (err) {
    throw err;
  }
  // Read the file data content into the text-area.
});

来自Electron的getPath documentation;

  

app.getPath(name)

     

名称String

     

返回String-与名称关联的特殊目录或文件的路径。失败时,将引发错误。

     

您可以通过name请求以下路径:

     

home用户的主目录。

     

appData每个用户的应用程序数据目录,默认情况下指向:Windows上的%APPDATA%,Linux上的$XDG_CONFIG_HOME~/.config和macOS上的~/Library/Application Support

     

userData用于存储应用程序配置文件的目录,默认情况下,该目录是appData目录,后跟应用程序名称。

     

temp临时目录。

     

exe当前的可执行文件。

     

module libchromiumcontent库。

     

desktop当前用户的桌面目录。

     

documents用户“我的文档”的目录。

     

downloads用户下载的目录。

     

music用户音乐的目录。

     

pictures用户图片的目录。

     

videos用户视频的目录。

     

logs应用程序日志文件夹的目录。

     

pepperFlashSystemPlugin到Pepper Flash插件系统版本的完整路径。

答案 1 :(得分:0)

尝试一下:

nil

findLogPath.js#L17