2016-05-19 40 views
2

我試圖在電子應用程序中使用Aurelia和SystemJs;如何在system.js加載腳本時要求('electron')

我有一個相當基本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.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; 
    ... 

...完美地工作。