尝试使用ember-electron
制作电子版应用,并尝试使用emberfire
与Firebase进行通信。当作为具有ember s
的Web应用程序运行时,一切运行正常但是当作为Electron应用程序启动时,除了这样的错误之外我什么也得不到:
XMLHttpRequest cannot load https://www.googleapis.com/identitytoolkit/v3/relyingparty/signupNewUser?key=AIzaSyBYyuJ-1E3ufujlzdKhj8gE9I6QH8TreJE. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'serve://dist' is therefore not allowed access. The response had HTTP status code 404.
这是一个已知问题还是有人知道解决这个问题的方法吗?不幸的是,不能简单地将serve://dist
添加到授权域列表中,因为Google并不认为它是有效的域名。
更新:我仍然想知道是否有人有可能的解决方法,但我找到了一个名为Nativefier(https://github.com/jiahaog/nativefier)的工具,它可以用于我的目的。由于我正在同时开发Web应用程序和桌面应用程序,因此在托管Web应用程序后,可以使用nativefier构建桌面应用程序
答案 0 :(得分:0)
我没有尝试使用电子,而是使用node-webkit。通过运行本地Web服务器可以解决许多与原点相关的问题:在主脚本中运行使用express的web服务器,为您的应用程序提供服务。这是我用来启动本地服务器的一段代码:
let express = require('express');
let http = require('http');
let app = express();
app.use('/', express.static('dist'));
let server = http.createServer(app);
let port = 9000;
let maxPort = 50000;
server.on('error', function (e) {
if (port < maxPort) {
server.listen(++port);
} else {
alert('Your system has no free ports to start a web-server, which is needed for this app to work');
window.nw.Window.get().close();
}
});
server.on('listening', function () {
location = 'http://localhost:' + port + '/index.html';
});
server.listen(port);
我认为类似的东西也适用于电子