Estoy usando la aplicación create react para arrancar mi aplicación.
He agregado dos .envarchivos .env.developmenty .env.productionen la raíz.
Mi .env.developmentincluye:
API_URL=http://localhost:3000/api
CALLBACK_URL=http://localhost:3005/callback
Cuando ejecuto mi aplicación usando una react-scripts startconsola 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, .envpero no si utilizo .env.developmento.end.production
reactjs
create-react-app
shenku
fuente
fuente

package.jsonarchivo?process.enves 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.enves 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/callbacksi 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/callbackVer más información aquí
fuente
.envpero no para.env.developmento.env.production?.envy no con.env.developmentyenv.productionAsegú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.productionusar el paquete dotenv-cli
agregar
.env.developmenty.env.productionen 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
dotenvodotenv-cli?dotenv-cli, nodotenv: npmjs.com/package/dotenv-clidotenvpero recibí un error. Revisé la documentación pero no encontré esa-eopción para la línea de comando. Sin embargo, lo encontré en ladotenv-clidocumentación. Por eso estaba diciendo. Finalmente estoy usandoenv-cmd, no tenerdotenvedotenv-cliinstalar 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-cmdluego en supackage.jsonarchivo en lascriptssecció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
.gitignorearchivo 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
.envarchivo funciona pero.env.developmento.env.productionno, crea un.envarchivo 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=noneen 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