需要帮助在Aurelia app中导入Electron

时间:2018-03-27 16:22:25

标签: electron aurelia systemjs jspm

我正在使用骨架导航,骨架 - 打字稿之一。

我正在尝试导入Electron.remote,以便我可以从JS中关闭电子窗口。这就是我在config.js中所拥有的:

  paths: {
    "*": "dist/*",
    "github:*": "jspm_packages/github/*",
    "npm:*": "jspm_packages/npm/*",
    "node_modules:*": "node_modules/*"
  },
  map: {
    "electron": "node_modules:electron/index.js",
  }

在我的JS文件中我导入如下:

import * as electron  from 'electron';

但是我收到有关在路径中找不到fs.js的错误:

Error: (SystemJS) XHR error (404 Not Found) loading http://localhost:9000/dist/fs.js

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

取决于您选择的加载器/捆绑器策略

电子有节点require()定义。 你想在启动依赖AMD需要的应用程序之前重新定义它

https://github.com/electron/electron/issues/303

TL; DR 您想要将节点需求分配给另一个变量 window.node_require = require 然后删除原始 delete require

只有在此之后您才能使用您的应用引用脚本 在您的应用程序中,您使用node_require()加载节点模块

以下是对supporting electron modules in aurelia

的相关评论

答案 1 :(得分:0)

这是我用JSPM& amp;修复Aurelia Skeleton Typescript问题的方法。 SystemJS:我输入了index.html head,这是我的条目:

  <script type="text/javascript">
    window.node_require = require;
    delete window.require;
    delete window.exports;
    delete window.module;
  </script>

然后我为BrowserWindow设置nodeIntegration: true

在我的TS文件中:

declare global {
  interface Window {
    node_require: any;
  }
}

var remote: any;

if (typeof window.node_require == "function") {
  remote = window.node_require('electron').remote;
}

  closeApp() {
    var window = remote.getCurrentWindow();
    window.close();
  }