【问题标题】:How to require('electron') when script is loaded by system.jssystem.js加载脚本时如何要求('电子')
【发布时间】:2016-09-16 00:21:20
【问题描述】:

我正在尝试在电子应用程序中使用 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 获取 file:///D:/Code/aurelia-electron-typescript/output/electron.js 净::ERR_FILE_NOT_FOUND

我也在配置中设置了transpiler: false

不幸的是,我想吃蛋糕,因为我想将 Aurelia 的依赖注入与电子的远程处理功能结合在一起。

有没有办法让 system.js 不干涉 electron 的 require

【问题讨论】:

  • 我相信 system.js 具有不犁 require 的本机能力,但我之前在电子应用程序中做过这个 - window.requireNode = require 在加载 system.js 之前,所以我仍然可以访问它要求。就像我说的,我认为还有更好的选择。

标签: javascript electron aurelia systemjs


【解决方案1】:

经过快速实验......如果脚本显式加载 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;
    ...

...工作得很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-23
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2019-03-15
    • 1970-01-01
    • 2012-11-06
    相关资源
    最近更新 更多