fs.existsSync 在电子中使用时不是函数

Dan*_*ens 9 fs node.js electron angular

我正在使用Angular 10,Electron 10.0electron-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)
Run Code Online (Sandbox Code Playgroud)

错误在这里弹出:

在此处输入图片说明

当我导入电子并在渲染器进程中有以下行时会发生这种情况:

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)
Run Code Online (Sandbox Code Playgroud)

nodeIntegrationtrue在创建BrowserWindow.

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

我浏览了整个 StackOverflow,但找不到任何我没有尝试过的解决方案。谁能帮我?

Tob*_*ias 7

所以根据你的句子: It happens when I import electron and have the following line in my renderer process: import { remote } from 'electron';

在 Electron 10 中,远程 API 发生了重大变化。
Web 首选项“enableRemoteModule”现在默认为 false。

激活模块并再次测试:

const w = new BrowserWindow({
    webPreferences: {
        enableRemoteModule: true
    }
})
Run Code Online (Sandbox Code Playgroud)

在这里您可以找到所有重大更改

查看使用 ipcRenderer 的推荐方式:
使用 ipcRenderer 而不是远程