2017-09-08 3 views
0

Vous essayez de créer une application Electron en utilisant ember-electron et j'essaie d'utiliser emberfire pour communiquer avec Firebase. Tout fonctionne très bien lors de l'exécution comme une application Web avec ember s mais lors du lancement comme une application électronique j'obtenir qu'erreurs comme ceci:Impossible d'accéder à Firebase à partir d'une application électronique

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. 

Est-ce un problème connu ou que quelqu'un connait un moyen de contourner cela? Malheureusement, nous ne pouvons pas simplement ajouter serve://dist à la liste des domaines autorisés car Google ne considère pas cela comme un nom de domaine valide.

Mise à jour: J'aimerais toujours savoir si quelqu'un a une solution de contournement possible, mais j'ai trouvé un outil appelé Nativefier (https://github.com/jiahaog/nativefier) qui fonctionne pour mes fins. Depuis que je développe simultanément une application web et une application de bureau, une fois l'application web hébergée, je peux utiliser nativefier pour créer l'application desktop

Répondre

0

Je n'ai pas essayé l'électron, mais j'ai joué avec node-webkit. De nombreux problèmes liés à l'origine peuvent être résolus en exécutant un serveur web local: dans le script principal, exécutez un serveur web en utilisant express qui sert votre application. C'est morceau de code que j'utilise pour démarrer le serveur local:

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

Je pense que quelque chose de semblable devrait fonctionner pour électrons, trop