web-dev-qa-db-fra.com

Ouvrir un fichier externe avec Electron

J'ai une application en cours d'exécution Electron et fonctionne très bien jusqu'à présent. Pour le contexte, je dois exécuter/ouvrir un fichier externe qui est un binaire Go-lang qui effectuera certaines tâches d'arrière-plan . Fondamentalement, il agira comme un backend et exposera une API que l'application Electron utilisera.

Jusqu'ici, c'est ce que j'entre dans:

  • J'ai essayé d'ouvrir le fichier avec "noeud façon" en utilisant child_process mais j'ai échoué en ouvrant un exemple de fichier txt probablement à cause de problèmes de chemin.

  • L'API Electron expose un open-file event mais il manque de documentation/exemple et je ne sais pas si cela pourrait être utile.

Ca y est .. Comment puis-je ouvrir un fichier externe dans Electron?

26
Javier Cadiz

Il y a quelques api que vous voudrez peut-être étudier et voir ce qui vous aide.

fs

Le module fs vous permet d’ouvrir directement des fichiers en lecture et en écriture.

var fs = require('fs');
fs.readFile(p, 'utf8', function (err, data) {
  if (err) return console.log(err);
  // data is the contents of the text file we just read
});

chemin

Le module path vous permet de créer et d’analyser des chemins d’une manière indépendante de la plate-forme.

var path = require('path');
var p = path.join(__dirname, '..', 'game.config');

Coquille

Le Shell api est une API uniquement électronique que vous pouvez utiliser pour exécuter un fichier sur un chemin donné par Shell, qui utilisera l'application par défaut du système d'exploitation pour ouvrir le fichier.

const {Shell} = require('electron');
// Open a local file in the default app
Shell.openItem('c:\\example.txt');

// Open a URL in the default way
Shell.openExternal('https://github.com');

processus_enfant

En supposant que votre binaire golang soit un exécutable, vous utiliserez child_process.spawn pour l’appeler et communiquer avec lui. Ceci est un noeud api. Si votre binaire golang n'est pas un exécutable, vous devrez créer un addon native wrapper.

var path = require('path');
var spawn = require('child_process').spawn;

var child = spawn(path.join(__dirname, '..', 'mygoap.exe'), ['game.config', '--debug']);
// attach events, etc.
48
justin.m.chase

Electron permet l'utilisation de nodejs packages.

En d'autres termes, importez les packages de noeud comme si vous vous trouviez dans le noeud, par exemple:

var fs = require('fs');

Pour exécuter le binaire golang, vous pouvez utiliser le module child_process . La documentation est complète.

Edit: Vous devez résoudre les différences de chemin. L'événement open-file est un événement côté client, déclenché par la fenêtre. Pas ce que tu veux ici.

0
thepanuto