Electron应用程序上的意外令牌导入
Unexpected token import on Electron app
我使用GitHub的Electron构建了一个应用程序。我正在使用推荐的加载模块的方式,ES6语法为:
import os from 'os'
下载样板后,应用程序运行良好。我已经能够在background.js
文件中导入脚本而没有问题。以下是我如何加载我的自定义模块:
import { loadDb } from './assets/scripts/database.js';
然而,当我在Electron中打开一个新的浏览器窗口(clipboard.html
)时,我正在加载一个JavaScript文件(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
窗口没有的东西(也许是"Rollup"?),但我的应用程序代码中没有明确的内容表明这一点。
您需要首先通过rollup运行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')),
]);
};
@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
中所做的那样
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- jQuery$.getJSON抛出意外令牌
- 为什么我在下面的..of循环中得到意外令牌
- 组件中的ReactJS意外令牌
- AngularJS $http GET 请求到本地 JSON 文件返回语法错误:意外令牌]
- 巴别塔,意外令牌 (15:33) ::.
- Sencha 2.0 和 Codeigniter RESTful API 生成未捕获的语法错误:意外令牌:
- 在事件上使用 jquery 时出现意外令牌
- JSON 中位置 4 处的意外令牌<
- 意外令牌 ) 在我的代码中
- Electron 和 Babel 6 异步/等待抛出意外令牌
- “JSON.parse(str)”返回“意外令牌c”,但str是一个字符串
- jQuery after() uncatch SyntaxError: 意外令牌 ILLEGAL
- 使用节点javascript的意外令牌ILLEGAL
- Javascript/JQuery-Chrome意外令牌
- Ajax 帖子未捕获语法错误:意外令牌非法
- angularjs-SyntaxError:请求从服务器返回时出现意外令牌
- jquery:使用ember的意外令牌C
- React本机项目中的意外令牌
- 解析有效的 JSON 得到“语法错误:意外令牌非法”