質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

5回答

7162閲覧

Electronが実行できない

yuta0801

総合スコア270

Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2017/03/17 07:34

###前提・実現したいこと
Electronを使用してアプリケーションを作成しています

###発生している問題・エラーメッセージ

main.js:9 app.on('window-all-closed', function() { ^ TypeError: Cannot read property 'on' of undefined at Object.<anonymous> (main.js:9:4) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:394:7) at startup (bootstrap_node.js:149:9) at bootstrap_node.js:509:3

###該当のソースコード

js

1'use strict'; 2 3var electron = require('electron'); 4var app = electron.app; 5var BrowserWindow = electron.BrowserWindow; 6 7var mainWindow = null; 8 9app.on('window-all-closed', function() { 10 if (process.platform != 'darwin') 11 app.quit(); 12}); 13 14app.on('ready', function() { 15 mainWindow = new BrowserWindow({width: 800, height: 600}); 16 mainWindow.loadURL('file://' + __dirname + '/index.html'); 17 18 mainWindow.on('closed', function() { 19 mainWindow = null; 20 }); 21});

html

1<!DOCTYPE html> 2<html> 3<head> 4<meta charset="UTF-8"> 5<title>Electron Read Us</title> 6</head> 7<body> 8<h1>Hello, electron!</h1> 9</body> 10</html>

###補足情報(言語/FW/ツール等のバージョンなど)
nodejs v6.9.5
electron v1.6.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

手元で試してみたところ、そのままコピペで動作しました。

もしかしてコマンド打つ時、node mainのようにnodeを実行していないでしょうか?electron .とelectronを実行しないとダメですよ。

スクリーンショット

投稿2017/03/17 18:38

sii_side

総合スコア849

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こうするとどうでしょうか?

HTML

1'use strict'; 2const electron = require('electron'); 3const app = electron.app || require('app'); 4const BrowserWindow = electron.BrowserWindow || require('browser-window'); 5let mainWindow = null; 6 7app.on('window-all-closed', function () { 8 if (process.platform != 'darwin') 9 app.quit(); 10}); 11 12app.on('ready', function () { 13 mainWindow = new BrowserWindow({width: 800, height: 600}); 14 mainWindow.loadURL('file://' + __dirname + '/index.html'); 15 16 mainWindow.on('closed', function () { 17 mainWindow = null; 18 }); 19});

投稿2017/03/17 07:46

s8_chu

総合スコア14731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuta0801

2017/03/17 09:12 編集

module.js:471 throw err; ^ Error: Cannot find module 'app' at Function.Module._resolveFilename (module.js:469:15) at Function.Module._load (module.js:417:25) at Module.require (module.js:497:17) at require (internal/module.js:20:19) at Object.<anonymous> (D:\programming\node\hash\main.js:3:29) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) と出てしまいます
guest

0

自分も同じ現象でハマっていましたが、sudo npx electron ./srcを実行すれば、アプリが表示されました.

理由はわかっていません...
なんらかの権限を変更する必要がありそうな????‍♂️

投稿2018/03/06 01:40

yonaO

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

長期の放置すいません

原因はわかっていませんが、コマンドプロンプトをスタートから開くと発生しなく
エクスプローラーのファイルメニューから開くと発生するようです


追記

いまでもエラーが出るときと出ないときがあるのですが、いくつかわかったことがあるので追記します

グローバルインストールしたelectronコマンドを使いelectron .と実行するときに発生するので
npxyarn runやnpm scriptなどから間接的に実行すると回避できるようです

require.resolve('electron')で読み込んでるモジュールのパスを確認したところ
エラーが出る方はローカルにインストールしたelectron
エラーが出ない方はグローバルにインストールしたelectron
が読み込まれていました

また実行しているコマンドのパスは同じですがelectron --versionの出力も違います
エラーが出る方:v10.2.0
エラーが出ない方:v3.0.3

ちなみにそれぞれインストールしたelectronのバージョンは以下です
ローカル:1.8.2
グローバル:3.0.3

おそらく作業ディレクトリか何かが影響してローカル、グローバルが
逆に読み込まれたのが原因だと思いますが詳しくのところはわかっていません

試しにローカル、グローバルともに削除し、最新の3.0.3をインストールしましたが結果は変わりませんでした
(npm list -gではelectron@3.0.3と表示されるのにelectron -vだとv10.2.10と表示されるのはなぜだろう)

投稿2018/08/17 21:58

編集2018/10/08 07:45
yuta0801

総合スコア270

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

bwz61366

2018/08/17 23:33

その2つのコマンドプロンプトに何か違いはありますか? たとえば、ひとつは管理者権限で開いていたりとか そういったことを質問に追記すれば何かしら糸口がつかめるかも ちなみに、コマンドプロンプトをスタートから開いたときと、エクスプローラーのファイルメニューから開いたときで、質問に書いてあるバージョンで検証したけども、こっちではそういう問題は発生しなかった いっそのこと、自分が打ったコマンドをメモりながら一から作業しなおして、それでも同じエラーが出てきたらメモしたコマンドをのせて質問を投稿とかしたほうがよさそう
yuta0801

2018/08/21 17:58

長期間放置したのが原因で同じエラーが再現できなくなりました npm scriptやnpxから実行したときにはグローバルインストールされたelectronが使われ ファイルメニューから開いたものを使うとローカルにインストールされたものが使われていました `require.resolve('electron')`より 環境の設定や、作業パスが影響しているのかもしれません
bwz61366

2018/08/22 18:13

問題が再現できなくなっちゃったんじゃどうしようもないな 適当にBA選ぶなりなんなりして質問を閉めちゃったほうがええんじゃない?
yuta0801

2018/08/23 03:28

度々すいません。解決したと思い久しぶりに以前触っていたelectronを使っているアプリをためしに起動してみたのですが、解決したのはエクスプローラーから開いたときだけでした
bwz61366

2018/08/23 03:39 編集

>解決したのはエクスプローラーから開いたときだけでした あなたは「コマンドプロンプトをスタートから開くと発生しなく、エクスプローラーのファイルメニューから開くと発生する」といった。 今までにあなたが出していない情報がないのなら、「エクスプローラーのファイルメニューから開いた場合だけ質問文の該当エラーが発生する」ということではないだろうかね? そして、それが改善されたなら、問題が再現できなくなっちゃったということ。 つまり、もう問題はないのではないだろうかね?(エラーの原因がわからないことを除けば)
yuta0801

2018/10/08 04:52

そうですね。今でも特殊な環境(エディタ内臓のターミナルとか)だと同じエラーができるのですが、 ひとまず原因の推測がついたのと、解決策がわかったのでこれ以上引きずるのもあれですし 解答に追記して解決としようと思います。ありがとうございました。
guest

0

最新のドキュメントでは

node

1var electron = require('electron'); 2var app = electron.app; 3var BrowserWindow = electron.BrowserWindow;

ではなく

node

1const {app, BrowserWindow} = require('electron')

みたいですね。

投稿2017/03/17 07:48

mosapride

総合スコア1480

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuta0801

2017/03/17 10:22

'use strict'; const {app, BrowserWindow} = require('electron'); let mainWindow = null; app.on('window-all-closed', function () { if (process.platform != 'darwin') app.quit(); }); app.on('ready', function () { mainWindow = new BrowserWindow({width: 800, height: 600}); mainWindow.loadURL('file://' + __dirname + '/index.html'); mainWindow.on('closed', function () { mainWindow = null; }); }); としても以下のようなエラーが出てしまいます main.js:6 app.on('window-all-closed', function () { ^ TypeError: Cannot read property 'on' of undefined at Object.<anonymous> (main.js:6:4) at Module._compile (module.js:570:32) at Object.Module._extensions..js (module.js:579:10) at Module.load (module.js:487:32) at tryModuleLoad (module.js:446:12) at Function.Module._load (module.js:438:3) at Module.runMain (module.js:604:10) at run (bootstrap_node.js:394:7) at startup (bootstrap_node.js:149:9) at bootstrap_node.js:509:3
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問