VPN-koukku, joka vie API-päätepisteen, muuttaa käynnistämiensä prosessien ympäristöä, ei sen päätteen, joka oli jo auki tunnelin noustessa. Tämä yksi ero selittää useimmat raportit „työkalu kutsuu yhä julkista päätepistettä“. Asetuksen sijoittamiseen on kaksi toimivaa paikkaa, ja valinta riippuu siitä, kuka sitä kuluttaa ja kuinka usein se muuttuu. Vertaa niitä ennen kuin lisäät vielä yhden käynnistyskomentosarjan.

Kaksi paikkaa, joissa asetus voi elää

Ensimmäinen vaihtoehto on etuliite itse komennossa: arvo on olemassa vain sitä yhtä kutsua varten ja katoaa sen mukana. Toinen vaihtoehto on vienti yhteyden koukun sisällä, ja se tavoittaa jokaisen prosessin, jonka koukku käynnistää sen jälkeen. Ne eroavat ulottuvuudessa ja eliniässä, eivät syntaksissa, ja tämä ero ratkaisee useimmat epäonnistumiset.

PropertyPrefix on the commandExport from the hook
Who receives itThat invocation onlyChildren the hook starts
LifetimeUntil the process exitsUntil the hook's own session ends
LeakageScoped to one commandApplies to later commands in that session
Repeat costEvery invocationOnce per connection
Works for an open editorNo, unless the editor is started with itNo

Taulukko saa koukun näyttämään halvalta ja kätkee todellisen laskun: se valitsee yksityisen päätepisteen myös komennoille, joilla ei ole tehtävän kanssa mitään tekemistä. Lue jokainen rivi rajoituksena, älä mieltymyksenä. Jos päätepiste vaihtuu tehtäväkohtaisesti, etuliite voittaa tarkkuudessa, vaikka maksaisi yhden näppäinpainalluksen.

Miksi koukku ei tavoita jo avattua kuorta

Ympäristömuuttujat annetaan prosessille, kun prosessikuva luodaan. Ennen yhteyttä käynnistynyt kuori säilyttää saamansa kopion, eikä koukun sisällä suoritettu vienti ole lähetys jokaiselle koneen prosessille. Vain koukun omat lapset perivät sen. Kuoren omat lapset ottavat sen, mitä kuori pitää hallussaan niiden käynnistyessä, ja siksi sama komento voi toimia yhdessä päätteessä ja epäonnistua toisessa.

Sama koskee graafista editoria. Sen laajennusisäntä, integroitu pääte ja taustalla toimiva kielipalvelin haarautuivat käynnistyksessä ja pitävät omia kopioitaan. Kansion uudelleenavaaminen ei välttämättä käynnistä näitä lapsia uudelleen, joten lisäämäsi asetus ei silti koskaan saavu perille.

Halvin testi on tulostaa muuttuja paikasta, joka epäonnistuu, ei kuoresta, joka toimii. Jos epäonnistuva prosessi käynnistyi ennen tunnelia, viennillä ei ollut mitään mahdollisuutta.

Komentokohtainen muoto, kirjoitettuna auki

Etuliite pitää valinnan näkyvissä komennossa, joka sitä käyttää, mikä auttaa, kun päätepiste vaihtuu tehtävien välillä:

env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool

Komento on havainnollistava: my-work-tool on paikkamerkki eikä INTERNAL_API ole VPN-standardi, joten korvaa se sen ohjelman dokumentoidulla asetuksella, jota todella ajat, ja omalla hyväksytyllä isännälläsi. Älä laita tunnusta tai salasanaa samalle riville, koska se päätyy kuoren historiaan.

Kun useat komennot kuuluvat yhteen tehtävään, lyhyt tarkistettu käärekomentosarja asettaa muuttujat ja käynnistää ne sitten. Näin säilyy yksi määritelmä tekemättä arvosta globaalia jokaiselle tulevalle komennolle päätteessä.

Lataa uudelleen, käynnistä uudelleen tai jätä rauhaan

Jos työkalu on jo käynnissä, suosi sen omaa uudelleenlatausta tai työtilaprofiilia, jos sellainen on. Muussa tapauksessa tallenna työ ja käynnistä uudelleen komponentti, joka lukee asetuksen, ja se on usein kielipalvelin eikä editorin ikkuna. Ikkunan uudelleenkäynnistys ja oletus, että lapsiprosessit seurasivat mukana, on juuri se syy, miksi uudelleenlataus näyttää siltä, ettei se toimi.

Yhteyden katkaisu on erillinen päätös. Tauottaminen, sulkeminen tai uudelleenyhdistäminen kuuluu sovellukselle, eikä päätepisteen muuttuja säädä sitä. Käsittele muuttujaa asetuksena, joka valitsee osoitteen, älä sääntönä siitä, mitä verkkoliikennettä saa sen jälkeen käyttää, ja nämä kaksi asiaa pysyvät erotettavina.

Aiheeseen liittyvät artikkelit