#SET command not found

1 messages · Page 1 of 1 (latest)

heady forge
#

esto puede ser por varias razones: ¿Has ejecutado npm install antes?

#

¿Puedes probar eliminando node_modules e instalar todo otra vez?

chilly acorn
heady forge
#

Pero te da error al ejecutar npm install?

chilly acorn
heady forge
#

que version de npm y node estás usando?

chilly acorn
#

La última lts

heady forge
#

has borrado el package-lock.json antes?

chilly acorn
#

He probado clonando el proyecto varias veces

#

Pero nada

heady forge
#

El proyecto esta en github?

chilly acorn
#

Si, pero es privado

heady forge
#

Igual es algo en el package.json, alguno de los comandos que se ejecutan

chilly acorn
#

Voy a probar, pero me parece extraño

heady forge
#

revisa lo que hay en el package.json para el comando que estas ejecutando

chilly acorn
#

Si está así

#

Es lo que te digo, en windows funciona bien pero luego en mac no

heady forge
#

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

heady forge
#

¿Has probado? ¿Te ha funcionado?

chilly acorn
#

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

heady forge
#

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

chilly acorn
heady forge
#

pues ahi deberías poner el valor de REACT_APP_ENVIRONMENT

chilly acorn
#

Te pongo tal cual lo que hay puesto:

#

REACT_APP_PORT=6969

#

Eso hay en el .env

heady forge
#

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í

chilly acorn
#

Okey, es decir que está mal echo el .env?

heady forge
#

en el .env tienes que poner todas las variables de entorno que quieres usar

chilly acorn
chilly acorn
#

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

heady forge
#

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

chilly acorn
heady forge
#

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

chilly acorn
#

REACT_APP_ENVIRONMENT=dev He puesto eso en el .env encima de la linea del puerto y no funciona

heady forge
#

como que no funciona? que has ejecutado? que error te devuelve?

chilly acorn
heady forge
#

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?

chilly acorn
heady forge
#

Como te dije antes: si ejecutas react-scripts start directamente, va a leer lo que esté en el .env

chilly acorn
heady forge
#

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

heady forge
#

es que el problema es que en tu package.json estás poniendo las variables de entorno directamente, no hagas eso, es mala practica

chilly acorn
#

Y como soy un poco noob no lo entiendo del todo

heady forge
heady forge
chilly acorn
#

Así o como?

heady forge
#

usar 'SET' funciona solo en Windows

#

tampoco, no uses variables de entorno

#

"dev": "react-scripts start"

chilly acorn
#

Pero entonces no va a detectar el entorno dev no?

heady forge
#

de hecho, deberías tener solo algo como: "run": "react-scripts start"

heady forge
chilly acorn
#

Vale, si que lo detecta

#

Duplico esa linea para cada react-script no?

heady forge
#

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

chilly acorn
heady forge
#

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

chilly acorn
#

Y como puedo hacer para tener todos esos entornos? Creando un .env para cada?

heady forge
#

pero, lo mejor es tener ficheros .env por cada entorno, para eso tienes que seguir la documentación de como hacerlo

chilly acorn
chilly acorn
#

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

heady forge
#

npm start por defecto tendrá NODE_ENV como development

chilly acorn
#

Entiendo que para npm start son esos los .env que ejecuta no?

heady forge
#

los .env no se ejecutan, se leen

#

npm start ejecutará la aplicación y leera las variables que estén en los .env

chilly acorn
#

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?

heady forge
#

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

chilly acorn
#

Y como puedo evitar que haga eso? Quiero que me le ejecute "normal"

heady forge
#

si NODE_ENV es prod, buscara un fichero .env.prod

chilly acorn
#

Ahora mismo está así

heady forge
#

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

chilly acorn
#

Pero yo lo que quiero es ejecutar el comando npm start y se comporte como quiero en todos los SO

heady forge
#

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

chilly acorn
#

Ya, pero ejecuntandolo ahora mismo me lo ejecuta como si fuera otro entorno

heady forge
#

¿Como que otro entorno?

#

npm run start -> leera lo que tengas en .env

#

si tienes configurado en .env entorno producción, será producción

chilly acorn
chilly acorn
heady forge
#

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
"

chilly acorn
#

Con el código actual se ejecuta así

#

Y debería ejecutarse así

heady forge
#

se ejecuta con lo que tengas en .env, o en su defecto si no pones nada en .env será el entorno "dev"

chilly acorn
#

Se está ejecutando el entorno "local"

heady forge
#

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

chilly acorn
#

Pero poniendolo así en el .env no se ejecuta como quiero, si no que se ejecuta en entorno "local"

heady forge
#

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

chilly acorn
#

Ya, pero como lo hago entonces, necesito también el entorno "local"

heady forge
#

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

chilly acorn
#

Vaya lio, ahora me lo detecta como dev

heady forge
#

Te recomiendo otra vez que leas la documentación que te he pasado, ahí explica como manejar este tema

chilly acorn
heady forge
#

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.

chilly acorn
heady forge
#

¿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

chilly acorn
#

De acuerdo

chilly acorn
#

Gracias por la ayuda, ya he conseguido que funcione

#

He echo esto, se que es un poco cutre, pero funciona