system.js加载脚本时如何要求('电子')

时间:2016-05-19 08:27:27

标签: javascript electron aurelia systemjs

我试图在电子应用程序中使用Aurelia和SystemJs;

我有一个相当基本的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   文件:/// d:/Code/aurelia-electron-typescript/output/electron.js   净:: ERR_FILE_NOT_FOUND

我也在配置中设置transpiler: false

不幸的是,我想吃蛋糕并且吃它,因为我想将Aurelia的依赖注射与电子的远程功能混合在一起。

有没有办法让system.js不干涉电子require

1 个答案:

答案 0 :(得分:0)

经过快速实验......如果脚本明确加载了System,它就会出现,它会神奇地起作用:

打字稿:

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;
    ...

......完美无缺。