Estoy usando la aplicación create react para arrancar mi aplicación.
He agregado dos .env
archivos .env.development
y .env.production
en la raíz.
Mi .env.development
incluye:
API_URL=http://localhost:3000/api
CALLBACK_URL=http://localhost:3005/callback
Cuando ejecuto mi aplicación usando una react-scripts start
consola process.env
, escupe
{ NODE_ENV: "development", PUBLIC_URL: "" }
He intentado cosas diferentes, pero simplemente no recojo los verificables en mi archivo de desarrollo, ¿qué estoy haciendo mal?
La estructura de la dirección es:
/.env.development
/src/index.js
El script Package.json es:
"start": "export PORT=3005; npm-run-all --parallel server:start client:start",
"client:start": "export PORT=3005; react-scripts start",
"server:start": "node server.js",
"build": "react-scripts build",
Editar:
@jamcreencia apuntado correctamente a mi variables deben tener el prefijo con REACT_APP
.
Editar 2
Funciona bien si le pongo un nombre al archivo, .env
pero no si utilizo .env.development
o.end.production
reactjs
create-react-app
shenku
fuente
fuente
package.json
archivo?process.env
es algo que el back-end (Node o lo que sea que estés usando) puede leer. El paquete de front-end no tiene idea de quéprocess.env
es ya que se ejecuta en el navegador. Puede configurar el paquete web para pasarlo en el paquete al empaquetar, o incluso más fácil, puede pasarlo desde el back-end en el archivo de índice que está representando como una variable global.react-scripts start API_URL=http://localhost:3000/api CALLBACK_URL=http://localhost:3005/callback
si aún no los ve, reiniciaría mi sistema para reducir el uso de memoria e intentarlo de nuevo, por lo general, esto me resuelve.Respuestas:
Con
create-react-app
, debe prefijarREACT_APP_
el nombre de la variable para poder acceder a ella.Ejemplo:
REACT_APP_API_URL=http://localhost:3000/api REACT_APP_CALLBACK_URL=http://localhost:3005/callback
Ver más información aquí
fuente
.env
pero no para.env.development
o.env.production
?.env
y no con.env.development
yenv.production
Asegúrese de que su archivo .env esté en el directorio raíz, no dentro de la carpeta src.
fuente
¡Tenía el mismo problema! La solución fue cerrar la conexión a mi servidor de nodo (puede hacer esto con CTRL + C). Luego reinicie su servidor con 'npm run start' y .env debería funcionar correctamente.
Fuente: Github
fuente
Si desea utilizar múltiples entornos como
.env.development
.env.production
usar el paquete dotenv-cli
agregar
.env.development
y.env.production
en la carpeta raíz del proyectoy su package.json
"scripts": { "start": "react-app-rewired start", "build-dev": "dotenv -e .env.development react-app-rewired build", "build-prod": "dotenv -e .env.production react-app-rewired build", "build": "react-app-rewired build", "test": "react-app-rewired test --env=jsdom", "eject": "react-scripts eject" },
luego construya de acuerdo con el entorno como
fuente
dotenv
odotenv-cli
?dotenv-cli
, nodotenv
: npmjs.com/package/dotenv-clidotenv
pero recibí un error. Revisé la documentación pero no encontré esa-e
opción para la línea de comando. Sin embargo, lo encontré en ladotenv-cli
documentación. Por eso estaba diciendo. Finalmente estoy usandoenv-cmd
, no tenerdotenv
edotenv-cli
instalar al mismo tiempo, lo que puede generar confusión.Con respecto a env-cmd . Según la amable publicación de VMois en gitHub , env-cmd se ha actualizado (versión 9.0.1 al momento de escribir), las variables de entorno funcionarán de la siguiente manera en su proyecto React :
"scripts": { "build:local": "env-cmd -f ./.env.production.local npm run build", "build:production": "env-cmd -f ./.env.production npm run build" }
En su archivo package.json .
fuente
Para ello existe el módulo env-cmd . Instale a través de npm y
npm i env-cmd
luego en supackage.json
archivo en lascripts
sección:"scripts": { "start": "env-cmd .env.development react-scripts start", "build": "GENERATE_SOURCEMAP=false env-cmd .env.production react-scripts build", }
En la raíz de su proyecto, debe crear dos archivos con las mismas variables env pero con valores diferentes:
Luego, excluirlos del público. Para esto en su
.gitignore
archivo agregue dos líneas:Entonces, esta es una forma adecuada de usar diferentes variables env para dev y prod.
fuente
Tenía el mismo problema, pero era porque tenía mi archivo .env en formato YAML en lugar de JS.
Era
REACT_APP_API_PATH: 'https://my.api.path'
pero necesitaba ser
REACT_APP_API_PATH = 'https://my.api.path'
fuente
Si el
.env
archivo funciona pero.env.development
o.env.production
no, crea un.env
archivo vacío junto con esos dos. No sé por qué, pero esto me funciona.fuente
Y recuerde no tener un punto y coma después de la clave API en el archivo env.
REACT_APP_API_KEY = 'ae87cec695cc4heheh639d06c9274a';
debiera ser
REACT_APP_API_KEY = 'ae87cec695cc44heheh1639d06c9274a'
ese fue mi error
fuente
A partir de los últimos scripts de reacción (3.2.0) es tan simple como decir
PORT=4000 BROWSER=none
en su archivo .env o .env.development (..etc) que se supone que está en la carpeta raíz.
NO funcionará con el prefijo REACT_APP (los documentos están desactualizados, supongo) y NO requiere ningún paquete npm adicional (react-scripts ya incluye dotenv 6.2.0)
fuente