typescript - Kuinka käyttää ympäristömuuttujia SvelteKit-projektisi päätehtävissä?
Minulla on SvelteKit-projekti, joka käyttää TypeScriptiä ja jossa on .env-tiedosto projektin juurihakemistossa. Juureen lisäsin drizzle.config.ts-tiedoston. Kun lisään seuraavan yläosaan:
_import { DATABASE_HOST} from '$env/static/private';_
sitten sekä WebStorm että VSCode antavat minulle seuraavan virheen:
_Cannot find module '$env/static/private' or its corresponding type declarations._
Tämä tapahtuu myös, kun käynnistän täysin uuden SvelteKit-projektin ja lisään yllä mainitut tiedostot, joten oletan, että ongelman toistaminen olisi helppoa.
Olen käynnistänyt VsCoden, Webstormin ja tietokoneeni uudelleen. Olen yrittänyt tehdä sen uudella projektilla. Mikään näistä ei toiminut. Monet keskustelut kertovat minun muuttavan joitain kokoonpanotiedostoja. Kokeilin joitain näistä, mutta ne eivät toimineet. Minusta myös tuntuu, ettei sen pitäisi olla ratkaisu, koska pitäisi olla heti käytettävissä oleva ratkaisu?
Voiko joku selittää, miksi tämä ei toimi, ja mikä olisi oikea tapa käyttää ympäristömuuttujia juuritiedostoissa SvelteKitissä?
Kiitos etukäteen!
Vastaus #1
Voit käyttää $env-moduuleja vain SvelteKit-sovelluksen koodissa (yleensä asioita src-kansiossa), koska se käsitellään rakentamisen aikana, joka lisää muuttujat asianmukaisesti.
Muissa tiedostoissa sinun on käytettävä mitä tahansa mekanismia, jonka ajonaikainen ympäristösi tarjoaa ympäristömuuttujien käyttämiseen, esimerkiksi Node.js:ssä on process.env.
Vastaus #2
Sveltekitille:
Aseta .env projektin juurihakemistoon.
Lisää yksityisten (vain palvelin) staattisten muuttujien eteen SECRET_
Lisää julkisten (myös asiakkaan) staattisten muuttujien eteen PUBLIC_
Esimerkki .env:
SECRET_DB_HOST=myhost
SECRET_PASSWORD=mypass
Voit sitten tuoda ja käyttää:
import { SECRET_DB_HOST, SECRET_PASSWORD } from '$env/static/private';
Voit varmistaa, että sveltekit todella lisää nämä muuttujat tiedostoon .svelte-kit/ambient.d.ts
