2016-03-26 15 views
2

電子BrowserWindowにロードしているangular2/typescriptアプリケーションがあります。これ用のモジュールはSystemJS経由でロードされます。しかし、電子を起動して実行すると、ファイルシステムから電子モジュールをロードしようとしているSystemJSローダーからエラーが発生します。電子モジュールを見つけることができるようにマップするために、SystemJSで設定する必要があるものとして、誰もが推奨するものはありますか?私は、電子的に事前構築された地図にはどんなjsも見ませんでした。BrowserWindowページから電子モジュールをインポートできません

更新 main.jsの内容とエラートレースを追加しました。私はコードを起動するためにmaxogdenのmenubarを使用しています。メインプロセスはJavascriptから来ており、BrowserWindowに読み込まれているページはTypeScriptになっています。


index.htmlを

<html> 
<head> 
<title>IR Toolbox</title> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="lib/ng2-material/dist/ng2-material.css"> 
<link rel="stylesheet" href="lib/ng2-material/dist/font.css"> 

<!-- 1. Load libraries --> 
<script src="lib/angular2-polyfills.js"></script> 
<script src="lib/system.src.js"></script> 
<script src="lib/Rx.js"></script> 
<script src="lib/angular2.dev.js"></script> 
<script src="lib/router.dev.js"></script> 
<script src="lib/http.dev.js"></script> 

<!-- 2. Configure SystemJS --> 
<script> 
    System.config({ 
    map: { 
     'ng2-material': './lib/ng2-material' 
    }, 
    packages: { 
     app: { 
     format: 'register', 
     defaultExtension: 'js', 
     }, 
     'ng2-material': { 
     defaultExtension: 'js' 
     } 
    } 
    }); 
    System.import('app/main') 
     .then(null, console.error.bind(console)); 
</script> 
</head> 

<!-- 3. Display the application --> 
<body> 
    <app>Loading...</app> 
</body> 
</html> 

electron.service.ts

モジュール問題のtypescriptですコンパイラでコンパイル罰金。私が実行して解決策を中心に働いた

import {Injectable} from 'angular2/core'; 
import {ipcRenderer} from 'electron'; 

@Injectable() 
export class ElectronService { 
    quit() { 
    ipcRenderer.send('mb-app', 'quit'); 
    } 
} 

main.js

const ipcMain = require('electron').ipcMain; 
const menubar = require('menubar'); 

const appPath = __dirname; 

const config = { 
    openDevTools: true, 
    title: 'Toolbox' 
}; 

const mb = menubar({ 
    dir: appPath, 
    index: appPath + "/index.html", 
}); 

if (config.openDevTools) { 
    mb.on('after-create-window',() => { 
    mb.window.openDevTools(); 
    }); 
} 

// Quit when all windows are closed. 
mb.app.on('window-all-closed',() => { 
    if (process.platform != 'darwin') { 
    mb.app.quit(); 
    } 
}); 

// This method will be called when Electron has finished 
// initialization and is ready to create browser windows. 
mb.app.on('ready',() => { 
    mb.tray.setToolTip(config.title); 

    mb.app.allowNTLMCredentialsForAllDomains(true); 

    ipcMain.on('mb-app', (event, arg) => { 
    if (arg === "quit") { 
     console.log('goodbye!'); 
     mb.app.quit(); 
    } 
    }); 
}); 

エラートレース

GET file:///D:/projects/electron/ir-toolbox/dist/electron net::ERR_FILE_NOT_FOUND 
    fetchTextFromURL @ system.src.js:1085 
    (anonymous function) @ system.src.js:1646Z 
    oneAwarePromise @ angular2-polyfills.js:580 
    (anonymous function) @ system.src.js:1645 
    (anonymous function) @ system.src.js:2667 
    (anonymous function) @ system.src.js:3239 
    (anonymous function) @ system.src.js:3506 
    (anonymous function) @ system.src.js:3888 
    (anonymous function) @ system.src.js:4347 
    (anonymous function) @ system.src.js:4599 
    (anonymous function) @ system.src.js:337 
    ZoneDelegate.invoke @ angular2-polyfills.js:322Z 
    one.run @ angular2-polyfills.js:218 
    (anonymous function) @ angular2-polyfills.js:567 
    ZoneDelegate.invokeTask @ angular2-polyfills.js:355Z 
    one.runTask @ angular2-polyfills.js:254 
    drainMicroTaskQueue @ angular2-polyfills.js:473 
angular2-polyfills.js:322 Error: Error: XHR error loading file:///D:/projects/electron/ir-toolbox/dist/electron(…)ZoneDelegate.invoke @ angular2-polyfills.js:322Z 
    one.run @ angular2-polyfills.js:218 
    (anonymous function) @ angular2-polyfills.js:567 
    ZoneDelegate.invokeTask @ angular2-polyfills.js:355 
    Zone.runTask @ angular2-polyfills.js:254 
    drainMicroTaskQueue @ angular2-polyfills.js:473 
    ZoneTask.invoke @ angular2-polyfills.js:425 
+0

メインモジュールの内容と正確なエラーメッセージを教えてください。ありがとう! –

+0

私は実際にこのような理由で、私のAngular 2 ElectronアプリのTypeScriptを削除しました。私はこれがあなたのための選択肢ではないかもしれないことは分かっていますが。 – Teak

+0

@Teakこれは私が取り組んでいる概念の証明ですので、私はangular2で動作させようとしています。もっと学習の練習として。ありがとう。 –

答えて

0

XHRを使用してレンダラープロセスで実行されているコードからの通信を処理するメインプロセスのExpressJS。レンダリングプロセスは電子モジュールに直接アクセスする必要はありません。

関連する問題