Electron: ipcモジュール使おうとしたら”Cannot find module ‘ipc'”エラーが出る問題の対処

スポンサーリンク

ElctronでIPC通信を実装しようとして

var ipc = require(‘ipc');

と書いてモジュールを読み込んだところ、

Uncaught Error: Cannot find module ‘ipc’

とのエラーが。

なんかElectronの仕様が変わり、書き方が変わってるらしいのでメモ。
Electronのバージョンはv1.4.13。

対処法:ipcを直接requireせず、electron.ipcMainに変更する

対処として、ipcモジュールをrequireする部分のコードで、

と書いていたところを、以下のように直してやると動く。

クジラ飛行机さんの本でやってる人向け

現在、クジラ飛行机さんのご著書「JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック」を読みながらクローラーを開発しているのですが、同じ本を読んでいる方向けに、第三章(p.127)のソースを書き直したものを載せておきます。

サンプルの動き

  1. レンダラープロセスから整数値を2つ、メインプロセスに同期通信、非同期通信のそれぞれで送信
  2. メインプロセスで送信された整数値を受け取り、それらを乗じたものを再びレンダラープロセスに返す
  3. メインプロセスから送られた結果を受け取り、画面に表示する

メインプロセス

レンダラープロセス

変更点

  • ipcモジュールの読み込み箇所をconst {ipcRenderer} = require(‘electron’);と変更。
  • レンダラープロセスとメインプロセスの区別がつきやすいように、それぞれの定数名をipcRenderer, ipcMain
  • アロー関数で書けるところはアロー関数に

実行結果

本の通りに計算結果が表示されたのでひと安心!

感想とか

結構Electronの仕様が色々変わってるっぽいので、面倒くさがらずにちゃんと公式見ながらやったほうが良さげ。

あと、とにかく「JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック」が面白い。買ってよかった!

参考にしたもの

Electron Documentation

https://electron.atom.io/docs/api/ipc-main/

Qiita – Electronでipcを使ってプロセス間通信を行う

http://qiita.com/Misumi_Rize/items/dde76dbf89abee13991c

JS+Node.jsによるWebクローラー/ネットエージェント開発テクニック

ABOUTこの記事をかいた人

職業:遊び人。1日の半分は睡眠時間の超ロングスリーパー。元大手IT企業のサラリーマンだったが、ブラックな労働環境で体を壊した挙句クビになり、やむをえず独立。それ以来定職にもつかず、半分遊びのようなヌルい仕事をしながら適当に暮らしている。良く言えばノマドワーカー。 詳しいプロフィールはこちら