Elektron BrowserWindow'a yüklediğim bir angular2/typescript uygulamasına sahibim. Bunun için modüller SystemJS ile yüklenir. Ancak, elektron ile çalıştırdığımda, SystemJS yükleyicisinden, elektron modülünü dosya sisteminden yüklemeye çalıştığı bir hata alıyorum. Elektron modülünü bulabilmesi için SystemJS'de yapılandırmak istediğim gibi herhangi bir öneri var mı? Elektron-prebuilt ile eşlemek için herhangi bir js görmedim.elektron modüllerini BrowserWindow sayfasından alamıyor
Güncelleştirme main.js içeriği ve hata izi eklendi. Kodumu başlatmak için maxogden'in menubar kullanıyorum. Böylece ana işlem Javascript'ten geliyor ve BrowserWindow'da yüklü olan sayfa TypeScript'te.
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
Söz konusu modül typescript derleyici ile iyi derler.
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();
}
});
});
Hata İz
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
Ana modülünüzün içeriğini ve tam hata iletisini verebilir misiniz? Teşekkürler! –
Aslında bu nedenle Angular 2 Electron app için TypeScript'i bıraktım. Ama bunun sizin için bir seçenek olmadığını anladım. – Teak
@Teak Bu, üzerinde çalıştığım bir kavram kanıtıdır, ben de angular2 ile çalışmayı denemeye çalışıyorum. Daha fazla öğrenme alıştırması. Teşekkürler. –