LoginSignup
9
9

More than 5 years have passed since last update.

electron v0.35.0 以降は、`electron` モジュールを使いましょう

Posted at

要約

  • × const app = require('app');
  • const app = require('electron').app;

疑問

const app = require('app');
const BrowserWindow = require('browser-window');
const shell = require('electron').shell;
const Menu = require('menu');
const ipcMain = require('electron').ipcMain;

コードを整理していると、変なことに気が付いた。electron/docsに紹介されているようなモジュールについて、electronモジュールから引っ張ってきているのと直接呼び出しているのと2つの扱いがあるが、それぞれ入れ替えても動く。

require('electron').ipcMainrequire('ipc-main') のように CamelCase と chain-case の違いはあれどもだいたい対応するモジュールがあるようだ。でも、shell を require('shell'); で呼び出すと、全てのウィンドウが閉じたらアプリが終了するようにしていた部分が動かなかったりと、少々違いはある。一体どうなっているのか。

解答

Release electron v0.35.0Add electron module which includes all public APIs.と書かれている。この統合が行われた背景は、Issue #387にある通り、electron のビルトインモジュールと一般モジュールが衝突する面倒が生じていたため。electron のビルトインモジュールは明示的に呼び出す仕様に整理された。

よって以下のように整理した。

const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
const shell = electron.shell;
const Menu = electron.Menu;
const ipcMain = electron.ipcMain;

参考:

  • electron/synopsis.md 古いスタイルの読み込みを強制的に無効にする方法なども紹介されている。
9
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
9