【问题标题】:fs.existsSync is not a function when used in electronfs.existsSync 在电子中使用时不是函数
【发布时间】:2020-11-25 21:19:39
【问题描述】:

我正在使用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)

这里弹出错误:

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

import { remote } from 'electron';

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

nodeIntegration 在创建BrowserWindow 时是true。

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

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

【问题讨论】:

标签: node.js angular electron fs


【解决方案1】:

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

在电子 10 中是远程 api 的重大更改。
webpreference "enableRemoteModule" 现在默认为 false。

激活模块并再次测试:

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

here you find all breaking changes

查看推荐的 ipcRenderer 使用方式:
use ipcRenderer and not remote

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 1970-01-01
    • 2019-05-19
    • 2020-08-12
    • 2017-08-23
    • 1970-01-01
    • 2016-06-11
    • 2019-12-27
    • 1970-01-01
    相关资源
    最近更新 更多