fs.existsSyn c не является функцией при использовании в электронном - PullRequest
5 голосов
/ 05 августа 2020

Я использую Angular 10, Electron 10.0 и electron-builder v22.8.0.

При запуске моего приложения Electron я получаю следующую ошибку в консоли:

fs.existsSync is not a function when used in electron
    getElectronPath @ ./node_modules/events/events.js:6
    <anonymous> @ ./node_modules/events/events.js:17
    ./node_modules/electron/index.js @ ./node_modules/events/events.js:19
    __webpack_require__ @ ./webpack/bootstrap:79
    ./src/app/projectview/new/new.component.ts @ ./src/app/projectview/new/new.component.ts:1
    [...]
    at __webpack_require__ (bootstrap: 79)

Ошибка здесь появляется:

enter image description here

It happens when I import electron and have the following line in my renderer process:

import { remote } from 'electron';

// later on in my component:
remote.dialog.showOpenDialog(...);

nodeIntegration это true при создании BrowserWindow.

   [...]
   win = new BrowserWindow({
      webPreferences: {
          webSecurity: false,
          nodeIntegrationInWorker: true,
          nodeIntegration: true,
          allowRunningInsecureContent: (serve) ? true : false,
    },

У меня есть просмотрел весь StackOverflow, но не нашел решения, которое не пробовал. Кто-нибудь может мне помочь?

1 Ответ

4 голосов
/ 13 августа 2020

поэтому на основе вашего предложения: It happens when I import electron and have the following line in my renderer process: import { remote } from 'electron';

в электроне 10 - это критическое изменение удаленного API. веб-настройка «enableRemoteModule» теперь по умолчанию ложна.

активируйте модуль и снова проверьте:

const w = new BrowserWindow({
    webPreferences: {
        enableRemoteModule: true
    }
})

здесь вы найдете все критические изменения

ознакомьтесь с рекомендуемым способом использования ipcRenderer: использовать ipcRenderer, а не удаленный

...