Pasar argumentos a la aplicación de electrones empaquetados.

Estamos utilizando el empaquetador de electrones para empaquetar y distribuir el front-end de nuestra aplicación web. Necesitamos poder pasar el host y el port del servidor a la interfaz electrónica para la conexión. Cuando iniciamos vía electron main.js --host blah --port 8080 funciona. Una vez que está empaquetado, lo ejecutamos a través de ./MyApp --host blah --port 8080 y no funciona. Esto es malo porque no queremos que los clientes necesiten instalar electron / npm. También vale la pena señalar que esto sucede si empaquetamos la aplicación en un archivo asar o no.

¿Alguna idea sobre cosas que podríamos intentar, o si estamos tratando de hacer esto de manera incorrecta?

Bueno, ¿cómo estás tratando de analizar la línea de comandos? ¿Cómo se ve el process.argv cuando empiezas con ./MyApp --host blah --port 8080 ?

Básicamente, cuando inicia Electron , busca en su carpeta de recursos ‘app’, ‘app.asar’ o ‘default_app’; cuando inicia su aplicación con electron main.js --host blah --port lo que realmente sucede es que se inicia la aplicación predeterminada de Electron que, entre otras cosas, analiza los argumentos de la línea de comandos . Cuando empaqueta su aplicación, se copia en la carpeta de recursos como ‘app’ o ‘app.asar’ y se iniciará directamente cuando ejecute MyApp más adelante. Es decir, está iniciando su aplicación de dos maneras fundamentalmente diferentes y es probable que esta sea la fuente de su problema.

Para mitigar esto, lo que me gusta hacer es vincular mi carpeta de desarrollo a la carpeta de recursos de Electron durante el desarrollo; De esta manera puedo omitir ‘default_app’ y tener la misma ruta de ejecución, ya sea que la aplicación esté empaquetada o no.

Dicho esto, no importa de qué manera inicie la aplicación, definitivamente debería poder analizar los argumentos de la línea de comandos. Para referencia, simplemente configuré esto en una de mis aplicaciones con yargs, por lo que definitivamente debería poder hacer que esto funcione.

Le recomiendo que use un sistema de gestión de argumentos de línea de comandos como “minimista”, por ejemplo.

Puedes usar esto en tu json: "start": "electron . --srv=server.com --prt=112 --arg3=myarg3"

En tu main.js puedes usar esto:

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

y puedes usar tus argumentos en el archivo javascript principal.

Para el paquete, puede hacer lo mismo pero en el acceso directo, agregando myapp.exe --srv=server.com --prt=112 --arg3=myarg3

    Intereting Posts