3

我已经使用 GitHub 的 Electron 构建了一个应用程序。我正在使用推荐的加载模块的方式,ES6 语法:

import os from 'os'

下载样板后,该应用程序运行正常。我已经能够background.js毫无问题地在文件中导入脚本。以下是我加载自定义模块的方式:

import { loadDb } from './assets/scripts/database.js';

clipboard.html但是,当我在 Electron 中clipboard.js打开一个新的浏览import器窗口(在这一点上,我收到一个Unexpected token import错误。

我的clipboard.html

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>Electron Boilerplate</title>

    <link href="./stylesheets/main.css" rel="stylesheet" type="text/css">

    <script>
        window.$ = window.jQuery = require('./assets/scripts/jquery-1.12.1.min.js');
    </script>
    <script src="./assets/scripts/clipboard.js"></script>
</head>
<body class="clipboard">[...]</body></html>

我的clipboard.js文件:

import { remote } from 'electron'; // native electron module
import { loadDb } from './assets/scripts/database.js';

const electron = require('electron');

document.addEventListener('DOMContentLoaded', function () { 
    var db = loadDb();
    db.find({ type: 'text/plain' }, function (err, docs) {
        var docsjson = JSON.stringify(docs);
        console.log(docsjson);
    });
});

只是为了重新迭代,在app.html我的应用程序的主窗口中使用了相同的代码,这不会出错。

感觉就像主窗口正在初始化我的clipboard.html窗口没有的东西(也许是“汇总”?),但我的应用程序代码中没有明确的建议。

4

2 回答 2

3

您需要先通过汇总运行 clipboard.js。Rollup 解析导入语句。您必须修改 tasks/build/build.js 才能做到这一点。

var bundleApplication = function () {
    return Q.all([
            bundle(srcDir.path('background.js'), destDir.path('background.js')),
            bundle(srcDir.path('clipboard.js'), destDir.path('clipboard.js')), // Add this line
            bundle(srcDir.path('app.js'), destDir.path('app.js')),
        ]);
};
于 2016-03-27T16:09:25.617 回答
0

@user104317 做对了,clipboard.js只是没有被rollup.

只是想在您的情况下添加它,它应该是:

var bundleApplication = function () {
    return Q.all([
        bundle(srcDir.path('background.js'), destDir.path('background.js')),
        bundle(srcDir.path('app.js'), destDir.path('app.js')),
        bundle(srcDir.path('assets/scripts/clipboard.js'), destDir.path('assets/scripts/clipboard.js')),
    ]);
};

那么你可以把它留在./assets/scripts/clipboard.js.

如果你最终有很多独立的 js 文件(如果你正在构建一个 SPA,你不应该这样做),考虑自动列出它们,就像在./tasks/build/generate_spec_imports.js

于 2016-03-31T23:35:39.760 回答