Passer des arguments à l’application électronique emballée

Nous utilisons électron-emballeur pour regrouper et dissortingbuer le front-end de notre application Web. Nous devons pouvoir passer l’ host et le port du serveur à la tête électronique pour la connexion. Lorsque nous lançons via electron main.js --host blah --port 8080 cela fonctionne. Une fois qu’il est emballé, nous ./MyApp --host blah --port 8080 via ./MyApp --host blah --port 8080 et cela ne fonctionne pas. C’est dommage car nous ne voulons pas que les clients aient besoin d’installer electron / npm lui-même. Il convient également de noter que cela se produit que l’application soit asar dans une archive asar ou non.

Des idées sur des choses que nous pourrions essayer, ou si nous essayons de faire les choses de la mauvaise façon?

Comment essayez-vous d’parsingr la ligne de commande? À quoi ressemble process.argv lorsque vous démarrez avec ./MyApp --host blah --port 8080 ?

En gros, lorsque vous démarrez Electron, il recherche dans son dossier de ressources les mots “app”, “app.asar” ou “default_app”; Lorsque vous démarrez votre application avec electron main.js --host blah --port l’application par défaut d’Electron est en fait lancée. Elle parsing , entre autres, les arguments de votre ligne de commande . Lorsque vous empaquetez votre application, elle est copiée dans le dossier de ressources sous le nom “app” ou “app.asar” et sera lancée directement lorsque vous exécuterez ultérieurement MyApp . C’est-à-dire que vous démarrez votre application de deux manières fondamentalement différentes et c’est probablement la source de votre problème.

Pour atténuer cela, j’aime bien lier mon dossier de développement au dossier de ressources d’Electron pendant le développement; De cette façon, je peux contourner ‘default_app’ et avoir le même chemin d’exécution, que l’application soit packagée ou non.

Cela dit, peu importe la façon dont vous démarrez l’application, vous devriez pouvoir parsingr les arguments de la ligne de commande. Pour référence, je viens de mettre cela en place dans une de mes applications avec jargs, vous devriez donc pouvoir le faire fonctionner.

Je vous recommande d’utiliser un système de gestion des arguments en ligne de commande tel que “minimist” par exemple.

Vous pouvez utiliser ceci dans votre JSON: "start": "electron . --srv=server.com --prt=112 --arg3=myarg3"

Dans votre main.js, vous pouvez utiliser ceci:

 var args = require('minimist')(process.argv); console.log(args) 

et vous pouvez utiliser vos arguments dans le fichier javascript principal.

Pour le package, vous pouvez faire la même chose, mais dans le raccourci, en ajoutant myapp.exe --srv=server.com --prt=112 --arg3=myarg3