Electron+React报错TypeError: fs.existsSync is not a function

Electron+React报错TypeError: fs.existsSync is not a function
在使用electron的getPath("documents")获取路径时报错:TypeError: fs.existsSync is not a function getElectronPath

为了获取特定目录的路径,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 插件的系统版本的完成路径。

异常错误

在使用此方法过程中,我遇到了如下的错误:
electron error

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函数冲突。

the end

热门文章