2016-05-19 3 views
2

Я пытаюсь использовать Aurelia и SystemJ в электронном приложении;Как требовать («электрон»), когда скрипт загружается system.js

У меня есть довольно простой app-window.js:

const remote = require('electron').remote; 

document.getElementById("close-btn").addEventListener("click", function (e) { 
    var window = remote.getCurrentWindow(); 
    window.close(); 
}); 

... 

если потреблять его как нормальный HTML скрипт (<script src="app-window.js"></script>) он отлично работает.

Однако, если у меня есть systemJS импортировать его:

<script> 
    System.import('app-window.js'); 
</script> 

Я получаю ошибку:

system.js:4 GET file:///D:/Code/aurelia-electron-typescript/output/electron.js net::ERR_FILE_NOT_FOUND

Также у меня есть transpiler: false набор в конфигурации тоже.

К сожалению, я хотел бы иметь свой торт и съесть его, так как я хотел бы смешивать инъекцию зависимости Aurelia с функциями удаленного электрона.

Есть ли способ иметь system.js не вмешиваться в электронный require?

+0

Я считаю, что system.js имеет собственную способность не вспахивать 'require', но я сделал это раньше в электронном приложении -' window.requireNode = require' перед загрузкой system.js, поэтому у меня все еще есть доступ к тому, что требуется , Как я уже сказал, я думаю, что есть лучший вариант. –

ответ

0

После быстрого эксперимента ... казалось бы, если сценарий явно загружает с системой, она волшебным образом работает:

машинопись:

export class AppWindow 
{ 
    constructor() 
    { 
    var remote = require('electron').remote; 

    document.getElementById("close-btn").addEventListener("click", function (e) { 
     var window: Electron.BrowserWindow = remote.getCurrentWindow(); 
     window.close(); 
    }); 
    } 
} 
var appWindow:AppWindow = new AppWindow() 

, которые при компиляции в [ES6, System]:

System.register([], function(exports_1, context_1) { 
    "use strict"; 
    var __moduleName = context_1 && context_1.id; 
    var AppWindow, appWindow; 
    return { 
     setters:[], 
     execute: function() { 
      class AppWindow { 
       constructor() { 
        var remote = require('electron').remote; 
    ... 

... работает отлично.

Смежные вопросы