Mac上のElectronでアプリケーションを作って実行していると、数分でトレイアイコンが消えるなどの異常が見られ、コンテキストメニューから項目を選ぶとクラッシュします。
クラッシュ時には「Electron が予期しない理由で終了しました。」とダイアログが出ます。
実行中のデベロッパーツールのログにはとくにエラーは記録されていませんでした。
エラーレポートには次のように書かれていました。(長文のため抜粋)
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00007f9700000249
以下が最小限まで切り落としたプログラムソースです。
index.js
Javascript
1'use strict'; 2 3const electron = require('electron'); 4const app = electron.app; 5const BrowserWindow = electron.BrowserWindow; 6 7var mainWindow = null; 8app.on('ready', function() { 9 mainWindow = new BrowserWindow({ 10 "width": 800, 11 "height": 600 12 }); 13 14 mainWindow.loadURL('file://' + __dirname + '/index.html'); 15 mainWindow.openDevTools(); 16 17 mainWindow.on('closed', function() { 18 mainWindow = null; 19 }); 20});
index.html
JavaScript
1<!DOCTYPE html> 2<html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Sample</title> 6 <script> 7 const remote = require('electron').remote; 8 const Menu = remote.Menu; 9 const MenuItem = remote.MenuItem; 10 const Tray = remote.Tray; 11 const NativeImage = remote.nativeImage; 12 13 document.addEventListener('DOMContentLoaded', function(){ 14 var contextmenu = new Menu(); 15 contextmenu.append( 16 new MenuItem({ 17 label: 'Quit', 18 click: function() { 19 remote.app.quit(); 20 } 21 }) 22 ); 23 24 window.addEventListener('contextmenu', function(ev) { 25 ev.preventDefault(); 26 try { 27 contextmenu.popup(ev.x, ev.y); 28 } catch(e) { 29 console.log(e); 30 } 31 return false; 32 }, false); 33 34 var icon = NativeImage.createFromPath(__dirname + '/icon.png'); 35 36 var tray = new Tray(icon.resize({ 37 width: 18, 38 height: 18 39 })); 40 tray.setContextMenu(contextmenu); 41 42 run(); 43 44 function run(){ 45 window.requestAnimationFrame(function(){ 46 run(); 47 }) 48 } 49 }); 50 </script> 51 </head> 52 <body> 53 test 54 </body> 55</html>
実行するとウィンドウとトレイアイコンが表示され、コンテキストメニューから終了することが出来ます。
しかし、数分するとトレイアイコンが消え、ウィンドウのコンテキストメニューから終了を選ぶと必ずクラッシュします。
本来はrequestAnimationFrame()を利用した時計を作る予定でした。
Electron 1.4.13 を OS X 10.11.6 で利用しています。
何が問題の原因なのでしょうか?
回答1件
あなたの回答
tips
プレビュー