#SET command not found
1 messages · Page 1 of 1 (latest)
esto puede ser por varias razones: ¿Has ejecutado npm install antes?
¿Puedes probar eliminando node_modules e instalar todo otra vez?
Lo he intentado varias veces
Pero te da error al ejecutar npm install?
Solo los tipicos depracated y eso
que version de npm y node estás usando?
La última lts
has borrado el package-lock.json antes?
El proyecto esta en github?
Si, pero es privado
Igual es algo en el package.json, alguno de los comandos que se ejecutan
Voy a probar, pero me parece extraño
es que "SET" no es un comando que funcione en mac
ese es el problema
si pruebas ejecutar por ejemplo: REACT_APP_ENVIRONMENT=dev react-scripts start directamente, debería funcionar
Tienes que configurar las variables de entorno para que funcionen sin problema en cualquier sistema operativo, usando un fichero .env
¿Has probado? ¿Te ha funcionado?
Lo voy a probar ahora
Ahora si que funciona gracias
En windows he estado probando y el unico que no funciona es el de "dev"
Sale eso al ejecutar el entorno dev
Es que en Windows necesitas usar SET para activar la variable de entorno
Es una mala práctica hacer eso desde el package.json, deberías usar algo como .env para setear las variables de entorno y eso funciona en cualquier sistema operativo
Tengo un archivo .env donde hay declarado un puerto
pues ahi deberías poner el valor de REACT_APP_ENVIRONMENT
Lo que te acabo de poner antes ^^
pues ahi deberías poner el valor de REACT_APP_ENVIRONMENT
y al ejecutar react-scripts start debería leer todo lo que tengas ahí
Okey, es decir que está mal echo el .env?
en el .env tienes que poner todas las variables de entorno que quieres usar
Okey, alguna referencia?
Perdona mi ignorancia, pero no entiendo bien como hacerlo😅
Hace poco empecé con react y con el estoy haciendo un proyecto bastante grande y no me aclaro muy bien
Si ejecutas react-scripts start automáticamente va a leer las variables de entorno que tengas en .env, entonces añade en ese fichero lo que necesitesm en tu caso REACT_APP_ENVIRONMENT=dev y en otra línea REACT_APP_PORT=6969
prueba a ejecutar la app y debería funcionar
Osea, en el mismo .env que tengo lo del puerto, pongo esos entornos no?
puedes tener diferentes ficheros .env, por ejemplo env.development, env.staging etc, con diferentes variables
pero de momento ponlo solo en .env
y despues, siguiendo la documentación puedes configurar los otros ficheros para otros entornos
REACT_APP_ENVIRONMENT=dev He puesto eso en el .env encima de la linea del puerto y no funciona
como que no funciona? que has ejecutado? que error te devuelve?
Pero eso es windows
no decias que el problema era en Mac?
Como te dije antes: si ejecutas react-scripts start directamente, va a leer lo que esté en el .env
has probado ejecutando ese comando?
Si, pero puse eso y funciono, pero en windows no funciona y quiero hacerlo para que funcione en todos los SO
Como te dije antes: si ejecutas react-scripts start directamente, va a leer lo que esté en el .env
es tampoco tienes react-scripts en tu PATH
cambia el package.json
y quita lo qyue pone SET
y lo que pone de REACT_APP_ENVIRONMENT
Aquí?
es que el problema es que en tu package.json estás poniendo las variables de entorno directamente, no hagas eso, es mala practica
Yo no lo hice, me lo encontré ya así
Y como soy un poco noob no lo entiendo del todo
La documentación explica como hacerlo: https://create-react-app.dev/docs/adding-custom-environment-variables/#adding-temporary-environment-variables-in-your-shell
Por eso, es mejor leer la documentación que explica todo paso a paso
Así o como?
usar 'SET' funciona solo en Windows
tampoco, no uses variables de entorno
"dev": "react-scripts start"
Pero entonces no va a detectar el entorno dev no?
de hecho, deberías tener solo algo como: "run": "react-scripts start"
por que no? como te he comentado varias veces ya, react-scripts start va a buscar el .env automáticamente y leerá las variables que estén ahí
no
puedes usar: npm run start
pero cambia: "start": "react-scripts start"
y npm run start va a funcionar siempre, con el .env que tengas
y en el .env puedes poner el entorno que quieras ejecutar
y debería funcionar siempre en cualquier sistema
Pongo todos esos entornos en el .env no??
No
solo el que quieres ejecutar en ese momento
si quieres usar dev, puedes poner solo el de dev
si quieres otro cambias la variable y listo
Y como puedo hacer para tener todos esos entornos? Creando un .env para cada?
pero, lo mejor es tener ficheros .env por cada entorno, para eso tienes que seguir la documentación de como hacerlo
Así?
Ahora funcionan todos bien menos el start
Pongo npm start y no funciona bien ya que se me pone como si fuera el entorno de prod
Has leido la documentación? https://create-react-app.dev/docs/adding-custom-environment-variables/, ahí explica todo esto y te pone ejemplos
npm start por defecto tendrá NODE_ENV como development
Entiendo que para npm start son esos los .env que ejecuta no?
los .env no se ejecutan, se leen
npm start ejecutará la aplicación y leera las variables que estén en los .env
Vale, entiendo que al tener el .env.local esta leyendo ese env y por eso se me ejecuta como si fuera el entorno ese
O me equivoco?
por defecto va a leer ese fichero, por que es modo "development" o local
si cambias NODE_ENV o especificas otro .env leerá ese fichero
Y como puedo evitar que haga eso? Quiero que me le ejecute "normal"
si NODE_ENV es prod, buscara un fichero .env.prod
Ahora mismo está así
No lo puedes evitar, siempre va a leer un .env o puedes pasarle las variables "manualmente" al ejecutar el script
con npm run start siempre va a arrancar en modo "development", si quieres cambiar el comportamiento puedes cambiar el fichero .env o añadir temporalmente la variable REACT_APP_* antes de ejecutar npm run start
en la documentación que te he pasado está el ejemplo, para Mac, Windows y Linux
Windows: set "REACT_APP_NOT_SECRET_CODE=abcdef" && npm start
Mac: REACT_APP_NOT_SECRET_CODE=abcdef npm start
Pero yo lo que quiero es ejecutar el comando npm start y se comporte como quiero en todos los SO
pero el comando npm start se comporta igual en todos los sistemas
si tienes un .env en Windows, Mac, o Linux lo va a leer siempre
Ya, pero ejecuntandolo ahora mismo me lo ejecuta como si fuera otro entorno
¿Como que otro entorno?
npm run start -> leera lo que tengas en .env
si tienes configurado en .env entorno producción, será producción
En el env solo esta el puerto
Eso
Tienes que añadir la variable que te hace falta en .env
pero esto ya lo hemos hablado 😅
"Si ejecutas react-scripts start automáticamente va a leer las variables de entorno que tengas en .env, entonces añade en ese fichero lo que necesitesm en tu caso REACT_APP_ENVIRONMENT=dev y en otra línea REACT_APP_PORT=6969
prueba a ejecutar la app y debería funcionar
"
se ejecuta con lo que tengas en .env, o en su defecto si no pones nada en .env será el entorno "dev"
Se está ejecutando el entorno "local"
pues entonces por defecto es local
cambia el .env y ya estaría, o añade la variable de entorno temporalmente alk ejecutar el script
Poniendo esto SET REACT_APP_ENVIRONMENT=prod&react-scripts start me sale como en la imagen esa
Pero poniendolo así en el .env no se ejecuta como quiero, si no que se ejecuta en entorno "local"
si tienes un .env.local, va a sobreescribir lo que tenga el .env
o tienes un .env o tienes un .env.local
lo mejor es tener un .env con las variables que vayas a necesitar por defecto, este fichero lo subes al repositorio git, y localmente copias el .env a .env.local y cambias acorde a lo que necesites
Ya, pero como lo hago entonces, necesito también el entorno "local"
en .env.local cambias el valor que quieres usar
o
en .env cambias la NODE_ENV y debería leer el .env correspondiente
es tema de como lo quieras hacer
lo que no puerdes hacer es poner en el package.json lo de SET o poner las variables de entorno ahí directamente, por que es una mala practica
Vaya lio, ahora me lo detecta como dev
Te recomiendo otra vez que leas la documentación que te he pasado, ahí explica como manejar este tema
No se si no se leer o algo, pero no encuentro eso en la documentación
Note: You must create custom environment variables beginning with REACT_APP_. Any other variables except NODE_ENV will be ignored to avoid accidentally exposing a private key on the machine that could have the same name. Changing any environment variables will require you to restart the development server if it is running.
Me lo he leido cinco veces y no lo entiendo bien
¿Qué es lo que no entiendes?
NODE_ENV determina el entorno que quieres usar para la aplicación,
en tu package.json estás forzando la variable REACT_APP_ENVIRONMENT a mano, pero solo funciona en windows
el comando para arrancar tu aplicación es: react-scripts start
ese comando, si no le especificas entorno, por defecto va a buscar un fichero .env y un .env.local, si pones en .env el valor para esa variable arrancará la aplicación con ese valor ("production", "dev", etc), lo segundo que hace es buscar un .env.local y leer lo que tenga ahí
si pones lo que quieres en .env.local es lo que usará al arrancar, si quieres que sea el entorno dev, debes poner REACT_APP_ENVIRONMENT=dev en ese fichero, si quieres que sea production cambias el valor
siempre va a leer .env.local, a menos que indiques otra cosa, si al arrancar tu aplicación en Windows con: set "REACT_APP_ENVIRONMENT=dev" && npm start
va a ejecutar el entorno dev, para hacer lo mismo en Mac: REACT_APP_ENVIRONMENT=dev npm start
Lo que no tienes que hacer es poner eso en el package.json por que no va a funcionar en todos los sistemas operativos
De acuerdo