fs.existsSync 在电子中使用时不是函数
Posted
技术标签:
【中文标题】fs.existsSync 在电子中使用时不是函数【英文标题】:fs.existsSync is not a function when used in electron 【发布时间】: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,
,
我浏览了整个 ***,但找不到任何我没有尝试过的解决方案。谁能帮帮我?
【问题讨论】:
你能验证你webpack.config
中的目标是electron-renderer
吗?
这能回答你的问题吗? How to resolve fs.existsSync is not a function
@JakeHolzinger 然后编译但失败,Cannot read property 'dialog' of undefined
【参考方案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
【讨论】:
以上是关于fs.existsSync 在电子中使用时不是函数的主要内容,如果未能解决你的问题,请参考以下文章
Browserify / Electron / AngularJS 错误:fs.existsSync 不是函数
TypeError:fs.existsSync 不是函数(Electron/ReactJS/Typescript)
fs.exists 和 fs.existsSync 之间的区别