簡體   English   中英

Electron - fs.readdir 回調有時不會在重新加載時執行

[英]Electron - fs.readdir callback sometimes doesn't execute on reload

在我重新加載包含該腳本的 window 后,大約 30% 的時間我的 electron 應用程序不執行 fs.readdir 回調。 當我使用electron. ,這個問題永遠不會發生,它只會在我重新加載 window 后才會發生。

我嘗試在執行 fs.readdir 之前添加 5 秒的 setTimeout,但這並沒有改變任何東西。 此外,在第一次運行 fs.readdir 后,所有正在進行的 fs.readdir 回調永遠不會執行,除非之后立即執行,或者之前從未重新加載過 window。

任何人都知道為什么會發生這種情況和解決方案?

主窗口.js:

const fs = require('fs')

// read all files in "images" directory
function readDirectory(){
    fs.readdir('images', (e, files) => {
        // On error, show and return error
        if(e) return console.error(e);
        
        console.log(files)
    });
}

readDirectory()

主.js:

const electron = require('electron')
const path = require('path')
const {app, BrowserWindow, Menu} = electron

process.env.NODE_ENV = 'development'

let mainWindow
let mainMenu

function createMainWindow(){
    // Create mainWindow
    mainWindow = new BrowserWindow({
        icon:'icon.png',
        webPreferences:{
            nodeIntegration:true,
            fullscreen: true
        }
    })
    // Load html file
    mainWindow.loadFile('mainWindow.html')

    // Main menu
    mainMenu = Menu.buildFromTemplate(mainMenuTemplate)
    // Set main menu
    Menu.setApplicationMenu(mainMenu)


    // Garbage handling
    mainWindow.on('close',()=>{
        mainWindow = null
        mainMenu = null // idk if necessary
    })

    if (process.env.NODE_ENV !== 'production'){
        mainWindow.webContents.openDevTools()
    }
}

app.on('ready',e=>{
    createMainWindow()
})

const mainMenuTemplate = [
    {
        role:'reload',
        accelerator:'cmdorctrl+r',
    }
]

此外,有時內容被讀取,但隨后似乎消失了。 視頻: https://imgur.com/a/qZjwSBi

如果您使用的是 fs 模塊集:

app.allowRendererProcessReuse = false;

https://github.com/electron/electron/issues/22119

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM