Fs.writeFile не показывает не пишущий файл Electron - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь добавить систему сохранения в мое приложение Electron, где нажимается либо элемент управления, либо команда s, и создается файл со строкой содержимого в качестве текста, но по какой-то причине он не работает. Откроется диалоговое окно сохранения, и я смогу выбрать место для сохранения и присвоить имя файлу, но когда я нажимаю «Сохранить», файл не появляется, я не получаю ошибок, он просто не создает файл, и я не уверен, что не так с моим кодом. Любая помощь будет принята с благодарностью.

Я занимаюсь разработкой на macOS, вот код, который выполняется в моей основной. js, который должен сохранять файл.

    electronLocalshortcut.register(win, 'CmdOrCtrl+S', () => {

        console.log('CmdOrCtrl+S Pressed')

        const fs = require('fs');
        const { dialog } = require('electron');

        let content = 'Test';

        dialog.showSaveDialog((fileName) => { // The dialog shows and I can save but no file appears where I saved it.
             if(fileName === undefined){
                console.log('The user clicked the button but didnt create a file!')
                return;
             }

            fs.writeFile(fileName, content, (err) => {
                if(err){
                    console.log('An error occured with the creation of the file ' + err.message)
                    return;
                }
                alert('File successfully created!') // Doesnt show either
            });

            console.log('Method complete') // Doesnt show in console
        });
    });

1 Ответ

0 голосов
/ 28 февраля 2020
dialog.showSaveDialog().then(result => {
  const { filePath: fileName } = result;
  if (fileName === undefined) {
    console.log("The user clicked the button but didnt create a file!");
    return;
  }
  fs.writeFile(fileName, "sampleContent", err => {
    if (err) {
      console.log("An error occured with the creation of the file " + err.message);
      return;
    }

    // Remove this Alert. Hence alert can't be called at main process. Only at Renderer
    // Whenever you try to call this alert at main then will show the undefined
    // alert('File successfully created!')

  });

  console.log("Method complete"); // Doesnt show in console
});
...