Wie kann ich Vite-Umgebungsvariablen in vite.config.js verwenden?
Lesezeit: 4 Minuten
Matt – Gib Github auf
Mit den folgenden .env in meinem Vite-Projekt:
# To prevent accidentally leaking env variables to the client, only
# variables prefixed with VITE_ are exposed to your Vite-processed code
VITE_NAME=Wheatgrass
VITE_PORT=8080
Wie kann ich verwenden VITE_PORT in meinem vite.config.js?
Matt – Gib Github auf
Sie können die laden app level env-Variablen und fügen Sie sie dem hinzu Node level Umgebungsvariablen:
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
export default ({ mode }) => {
process.env = {...process.env, ...loadEnv(mode, process.cwd())};
// import.meta.env.VITE_NAME available here with: process.env.VITE_NAME
// import.meta.env.VITE_PORT available here with: process.env.VITE_PORT
return defineConfig({
plugins: [vue()],
server: {
port: parseInt(process.env.VITE_PORT),
},
});
}
Wenn das oben Gesagte bei Ihnen nicht funktioniert (z. B. Sie möchten eine Variable importieren, der nicht das Präfix „ VITE_. Versuche dies: process.env = { ...process.env, ...loadEnv(mode, process.cwd(), '') }; Das Präfx (3. Argument) macht hier tatsächlich den Unterschied.
– F. Müller
7. Februar 2022 um 13:27 Uhr
Bezüglich der server.port Aufgabe, mein vite.config.ts gibt mir die Fehlermeldung „Typ ‚String‘ kann nicht dem Typ ‚Nummer‘ zugewiesen werden“. Wie kann ich das beheben?
– Brent Arias
12. Januar um 19:46 Uhr
@BrentArias Umgebungsvariablen sind immer Zeichenfolgen, aber die Typdefinitionen für Vite erwarten dort eine Zahl. Verwenden parseInt.
– robere2
14. Januar um 21:26
Danke, es funktioniert in der Datei vite.config.ts
– TEMPO
1. April um 16:46 Uhr
ACHTUNG: Bessere Verwendung Object.assign(process.env, loadEnv(mode, process.cwd())) statt zu zerstören process.env! Als ich die Umgebungsvariablen auf diese Weise hinzufügte, verloren die Schlüssel irgendwie ihre Groß-/Kleinschreibung (unter Windows). Genauer gesagt: Laufen npx vite ist für mich gescheitert, weil process.env.SYSTEMROOT ist undefiniert, while process.env.SystemRoot Ist definiert. Dies passiert nicht mehr, wenn ich es verwende Object.assign stattdessen.
– StrikeAgainst
9. April um 14:09
Goutham JM
Wenn die obige Lösung von @matt für Sie nicht funktioniert, ändern Sie sie vite.config.ts/ vite.config.js Wie unten