javascript - Välitä argumentit paketoidulle Electron-sovellukselle
Käytämme electron-packageria verkkosovelluksemme etupään paketoimiseen ja jakeluun. Meidän täytyy pystyä välittämään palvelimen host ja port Electron-etupäähän yhteyden muodostamista varten. Kun käynnistämme komennolla electron main.js --host blah --port 8080, se toimii. Kun se on paketoitu, käynnistämme komennolla ./MyApp --host blah --port 8080 eikä se toimi. Tämä on huono asia, koska emme halua asiakkaiden tarvitsevan asentaa Electronia/npm:ia itse. On myös huomionarvoista, että tämä tapahtuu riippumatta siitä, paketoimmeko sovelluksen asar-arkistoon vai emme.
Onko teillä ideoita asioista, joita voisimme kokeilla, vai teemmekö tämän kenties väärällä tavalla?
Vastaus #1
No, miten yrität jäsentää komentoriviä? Miltä process.argv näyttää, kun käynnistät komennolla ./MyApp --host blah --port 8080?
Periaatteessa, kun käynnistät Electronin, se etsii resurssikansiostaan 'app', 'app.asar' tai 'default_app'; kun käynnistät sovelluksesi komennolla electron main.js --host blah --port, todellisuudessa käynnistyy Electronin oletussovellus, joka muun muassa käsittelee komentoriviparametrit. Kun paketoit sovelluksesi, se kopioidaan resurssikansioon nimellä 'app' tai 'app.asar' ja käynnistyy suoraan, kun myöhemmin suoritat MyApp. Toisin sanoen, käynnistät sovelluksesi kahdella periaatteellisesti erilaisella tavalla, ja tämä on todennäköisesti ongelmasi lähde.
Tämän lieventämiseksi pidän siitä, että linkitän kehityskansioni Electronin resurssikansioon kehityksen aikana; näin voin ohittaa 'default_app' -asetuksen ja minulla on sama suorituskäytävä riippumatta siitä, onko sovellus pakattu vai ei.
Kun tämän on sanottu, sillä ei ole merkitystä, millä tavalla käynnistät sovelluksen, sinun pitäisi ehdottomasti pystyä jäsentämään komentoriviparametrit. Viitteeksi, asensin juuri tämän yhteen sovelluksistani yargsin avulla, joten sinun pitäisi ehdottomasti pystyä saamaan tämä toimimaan.
Vastaus #2
Suosittelen, että käytät komentoriviparametrien hallintajärjestelmää, kuten esimerkiksi "minimist".
Voit käyttää tätä jsonissasi: "start": "electron . --srv=server.com --prt=112 --arg3=myarg3"
Voit käyttää tätä pääsivullasi main.js:
var args = require('minimist')(process.argv);
console.log(args)
ja voit käyttää argumenttejasi pääjavascript-tiedostossa.
Paketin osalta voit tehdä saman asian myös pikakuvakkeessa lisäämällä myapp.exe --srv=server.com --prt=112 --arg3=myarg3
