【问题标题】:How to run Aurelia app with Electron?如何使用 Electron 运行 Aurelia 应用程序?
【发布时间】:2017-11-09 12:01:59
【问题描述】:

我使用 Aurelia CLI 创建了一个默认的 Hello World 应用程序,该应用程序已确认使用 Aurelia 运行。

Aurelia 在根目录中生成了一个 index.html,如下所示:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Aurelia</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
  </head>

  <body aurelia-app="main">
    <script src="scripts/vendor-bundle.js" data-main="aurelia-bootstrapper"></script>
  </body>
</html>

从那里我简单地基于 Electron QuickStart main.js 创建了一个 main.js,并使用 npm install --save-dev 安装了 Electron。我将 main.js 设置为项目的驱动程序并启动了 Electron。

应用索引打开了,但是 Electron 是空白的。让 Aurelia 与 Electron 合作的正确步骤是什么?

我已经使用 Electron 创建了一些基本的 JavaScript 项目,但我似乎无法让其他 Web 应用程序运行。 Angular 也是如此。

Node 一直在尖叫:

(node:5372) Warning: a promise was rejected with a non-error: [object String]
process.on @ internal/process/warning.js:21

还有 PLATFORM.Loader 的问题:

Unhandled rejection No PLATFORM.Loader is defined and there is neither a System API (ES6) or a Require API (AMD) globally available to load your app.
printWarning @ vendor-bundle.js:1386

【问题讨论】:

  • 首先,通过按 Ctrl+Shift+I 来查看电子控制台中的内容
  • Node 警告说一个 promise 被非错误拒绝,我从 vendor-bundle.js 收到一个关于 PLATFORM.Loader 的 printWarning。

标签: javascript html electron aurelia


【解决方案1】:

您可以尝试将您的html-webpack-plugin 更新到最新版本吗?我认为这是一个 webpack 配置问题。

【讨论】:

  • 我不能代表 Wotsa,但在我的场景中,我使用的是 RequireJs,not webpack。使用 SystemJs 时不会出现错误,所以这就是我现在走的路线。
【解决方案2】:

我刚刚遇到这个问题,并按照https://github.com/electron/electron/issues/303 中的注释对我有所帮助。注意:“require”对我来说是未定义的,所以我不得不将其更改为

window.nodeRequire = window.require || {};

我不知道这对我在应用程序中使用节点 API 有什么影响,但我的“Hello World”Aurelia 应用程序现在使用 NodeJS 和 Electron 3.0.0 beta-1 运行。

更新:我相信缺少 window.require 是因为在 main.js 我有 webPreferences: false。删除此限制即可消除此限制。

【讨论】:

    猜你喜欢
    • 2021-09-19
    • 2020-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 2019-12-28
    相关资源
    最近更新 更多