Matt – Abandona Github
Con lo siguiente .env
en mi proyecto Vite:
# 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
¿Cómo puedo usar VITE_PORT
en mi vite.config.js
?
Matt – Abandona Github
Puedes cargar el app level
variables env y agregarlas a la Node level
variables ambientales:
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),
},
});
}
-
Si lo anterior no funciona para usted (por ejemplo, desea importar una variable que no tiene el prefijo
VITE_
. Prueba esto:process.env = { ...process.env, ...loadEnv(mode, process.cwd(), '') };
El prefijo (tercer argumento) marca la diferencia aquí.– F. Müller
7 de febrero de 2022 a las 13:27
-
Con respecto a
server.port
tarea, mivite.config.ts
me da el error “El tipo ‘cadena’ no se puede asignar al tipo ‘número'”. ¿Cómo arreglo eso?–Brent Arias
12 ene a las 19:46
-
@BrentArias Las variables de entorno siempre son cadenas, pero las definiciones de tipo para Vite esperan un número allí. Usar parseInt.
– robere2
14 de enero a las 21:26
-
gracias funciona en el archivo
vite.config.ts
– PASO
1 abr a las 16:46
-
PRECAUCIÓN: Mejor uso
Object.assign(process.env, loadEnv(mode, process.cwd()))
en lugar de desestructurarprocess.env
! Cuando agregué las variables env de esa manera, las claves perdieron su insensibilidad a mayúsculas y minúsculas de alguna manera (ejecutándose en Windows). Para ser específicos, corrernpx vite
me falló porqueprocess.env.SYSTEMROOT
es indefinido, mientras queprocess.env.SystemRoot
Se define. Esto ya no sucede cuando usoObject.assign
en cambio.– Huelga Contra
9 abr a las 14:09
Goutham JM
Si la solución anterior de @matt no funciona para usted, cambie el vite.config.ts
/ vite.config.js
como abajo
1ra solución
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
export default defineConfig(({ mode }) => {
const env = loadEnv(
'mock',
process.cwd(),
''
)
const processEnvValues = {
'process.env': Object.entries(env).reduce(
(prev, [key, val]) => {
return {
...prev,
[key]: val,
}
},
{},
)
}
return {
plugins: [vue()],
define: processEnvValues
}
}
2da solución
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
export default ({ mode }) => {
process.env = Object.assign(process.env, loadEnv(mode, process.cwd(), ''));
return defineConfig({
plugins: [vue()],
});
}
-
¿Dónde puedo colocar un archivo console.log para ver los valores detrás de ‘definir’?
– Juegos de sombras
5 ene a las 19:42
-
Debería funcionar después
processEnvVales
si no es posible , lo comprobaré una vez– GouthamJM
9 de enero a las 5:27
-
Un console.log after no imprime ningún registro en el terminal ni en la consola del desarrollador web.
– Juegos de sombras
9 de enero a las 11:39
Tal vez esto pueda ser útil para alguien que esté trabajando con react and vite.
vite.config.js
import { defineConfig, loadEnv } from "vite";
import react from "@vitejs/plugin-react";
// https://vitejs.dev/config/
// export default defineConfig({
// plugins: [react()],
// })
export default defineConfig(({ mode }) => {
const env = loadEnv("mock", process.cwd(), "");
const processEnvValues = {
"process.env": Object.entries(env).reduce((prev, [key, val]) => {
console.log(key, val);
return {
...prev,
[key]: val,
};
}, {}),
};
return {
plugins: [react()],
define: processEnvValues,
};
});
Cómo probar:
1.- Agrega estas variables a una nueva .env o .env.local archivo
REACT_APP_MAILCHIMP_URL="https://gmail.xxxx.com/subscribe/post"
REACT_APP_MAILCHIMP_U="xxxxxxxxxxxxxxxxx"
REACT_APP_MAILCHIMP_ID="YYYYYYYYYYYY"
2.- Añadir un nuevo componente componente/Prueba.js archivo
export const Test = () => {
console.log(import.meta.env.REACT_APP_MAILCHIMP_URL);
console.log(import.meta.env.REACT_APP_MAILCHIMP_U);
console.log(import.meta.env.REACT_APP_MAILCHIMP_ID);
const a_var = `${process.env.REACT_APP_MAILCHIMP_URL}`;
console.log(a_var);
return (
<div>
<small> You are running this application in mode.:
<b>{process.env.NODE_ENV}</b>
</small>
<div>
<small> REACT_APP_NOT_SECRET_CODE:
<b> {process.env.REACT_APP_MAILCHIMP_URL}</b>
</small>
</div>
</div>
);
};
3.- Añadir componente Test a Aplicación.js archivo
import "./App.css";
import { Test } from "./components/Test";
function App() {
return (
<div className="App">
<Test />
</div>
);
}
export default App;
-
Iba a escribir lo mismo por mi cuenta, pero aquí tienes mi amigo, gracias.
– JEX
11 abr a las 20:12