Невозможно получить доступ к базе данных из электронного приложения

Попытка создать приложение Electron, используя ember-electron и я пытаюсь использовать emberfire общаться с Firebase. Все работает нормально при запуске в качестве веб-приложения с ember s но при запуске приложения 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), который работает для моих целей. Поскольку я одновременно занимаюсь разработкой веб-приложения и настольного приложения, после размещения веб-приложения можно использовать nativefier для создания настольного приложения.

1 ответ

Я не пробовал с электроном, но играл с node-webkit. Многие проблемы, связанные с происхождением, можно решить, запустив локальный веб-сервер: в основном скрипте запустите веб-сервер, используя Express, который обслуживает ваше приложение. Это фрагмент кода, который я использую для запуска локального сервера:

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);

Я думаю, что нечто подобное должно работать и для электрона.

Другие вопросы по тегам