Electronのrenderer processで__dirnameが使えない件(2021/10)

結論

BrowserWindowのインスタンスを作る時に以下のオプションを設定しよう。

mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
contextIsolation: false
}
});
発生した問題

Electron in Actionっていう洋書をもとにElectronの勉強をしていたところ、本が古いせいか、レンダラープロセスで「alert(__dirname)」って出来るぜいぇ〜い、っていう箇所が上手く行かなかった・・。ここで「おぉーすっげー」ってなる予定だったのだが。

Uncaught ReferenceError: __dirname is not defined

stackOverflowとかで調べたけど、とりま「nodeIntegration: true」にせよ、みたいに書いてあって「contextIsolation: false」のことが書かれていなかった記事が多かった。

Electronもどんどんバージョンが上がってきて、ここらへんのセキュリティ的なところが厳しくなってきているんでしょうかね。

Electronの人気ってどうなんでしょうかね。スマホアプリ開発とかが盛り上がっている中、PCアプリのみっていうのがなんともですが、slackとかVSCodeとか、おそらくDocker Desktopとか?Electronで作られてるっぽいアプリもありますね。まぁ、ウェブ開発系の人達が使いそうなものばっかりだけど・・。

とはいえ、ぜひ参考にしてみてください。