Mi proyecto se basa en create-react-app . npm start
o, yarn start
de manera predeterminada, ejecutará la aplicación en el puerto 3000 y no hay opción de especificar un puerto en el paquete.json.
¿Cómo puedo especificar un puerto de mi elección en este caso? Quiero ejecutar dos de este proyecto simultáneamente (para pruebas), uno en puerto 3005
y otro es3006
next -p 3005
si alguien más cae aquí buscando lo mismo.Respuestas:
Si no desea establecer la variable de entorno , otra opción es modificar la
scripts
parte de package.json de:a
Linux (probado en Ubuntu 14.04 / 16.04) y MacOS (probado por @ aswin-s en MacOS Sierra 10.12.4):
o (puede ser) una solución más general por @IsaacPak
Solución Windows @JacobEnsor
cross-env lib funciona en todas partes. Ver la respuesta de Aguinaldo Possatto para más detalles.
Actualización debido a la popularidad de mi respuesta: actualmente prefiero usar variables de entorno guardadas en un
.env
archivo (útil para almacenar conjuntos de variables para diferentesdeploy
configuraciones en una forma conveniente y legible). No se olvide de añadir*.env
en.gitignore
si todavía está guardando sus secretos en.env
los archivos. Aquí está la explicación de por qué el uso de variables de entorno es mejor en la mayoría de los casos. Aquí está la explicación de por qué almacenar secretos en el medio ambiente es una mala idea.fuente
"start": "set PORT=3005 && react-scripts start"
"start": "export PORT=3006 react-scripts start"
funcionó para mí"start": "export PORT=3001 && react-scripts start"
Este me funcionó en Ubuntu 16cross-env
es cuando tienes varios desarrolladores trabajando en diferentes sistemas. Quizás algunos prefieran MAC y otros prefieran Windows. O, en otro escenario, todos los desarrolladores usan Windows pero desea agregar una Variable de entorno que se ejecutará en su servidor CI / CD que ejecuta Ubuntu. Espero que eso ayude.Aquí hay otra forma de lograr esta tarea.
Cree un
.env
archivo en la raíz de su proyecto y especifique el número de puerto allí. Me gusta:fuente
.env
. En su caso, recomiendan usar el.env.local
que no debe verificar en el control de fuente, para que pueda verificar de forma segura.env
en el control de fuente. Entonces, el mismo consejo aún se aplica.Puede usar cross-env para configurar el puerto, y funcionará en Windows, Linux y Mac.
entonces en package.json el enlace de inicio podría ser así:
fuente
Puede especificar una variable de entorno denominada
PORT
para especificar el puerto en el que se ejecutará el servidor.fuente
"start": "set PORT=3005 react-scripts start"
solo configura el puerto pero no ejecuta la aplicación"start": "set PORT=3005 && react-scripts start"
Para mis amigos de Windows, descubrí una forma de cambiar el puerto ReactJS para que se ejecute en cualquier puerto que desee. Antes de ejecutar el servidor, vaya a
En él, busque la línea a continuación y cambie el número de puerto al puerto deseado
Y eres bueno para ir.
fuente
node_modules
directorio quedarán impresionados cuando se actualicen los paquetes. Probablemente sea mejor usar una de las otras respuestas.Cree un archivo con nombre
.env
en el directorio principal ademáspackage.json
y establezca laPORT
variable en el número de puerto deseado.Por ejemplo:
.env
fuente
Solo actualiza un poco en
webpack.config.js
:luego corre de
npm start
nuevo.fuente
En su
package.json
, vaya a los scripts y use--port 4000
oset PORT=4000
, como en el ejemplo a continuación:package.json
(Windows):package.json
(Ubuntu):fuente
Esto funciona tanto en Windows como en Linux
package.json
pero es preferible crear .env con PORT = 3006 escrito dentro
fuente
'PORT' is not recognized as an internal or external command, operable program or batch file.
El cambio en mi archivo package.json también
"start": "export PORT=3001 && react-scripts start"
funcionó para mí y estoy en macOS 10.13.4fuente
Para resumir, tenemos tres enfoques para lograr esto:
El más portátil será el último enfoque. Pero como se menciona en otro póster, agregue .env a .gitignore para no cargar la configuración en el repositorio de fuentes públicas.
Más detalles: este artículo
fuente
puedes encontrar la configuración de puerto predeterminada al iniciar tu aplicación
desplácese hacia abajo y cambie el puerto a lo que quiera
Espero que esto pueda ayudarte;)
fuente
yarn eject
primero debe hacerlo .Prueba esto:
fuente
Sería bueno poder especificar un puerto que no
3000
sea, ya sea como parámetro de línea de comando o como variable de entorno.En este momento, el proceso es bastante complicado:
npm run eject
scripts/start.js
y busque / reemplace3000
con cualquier puerto que desee usarconfig/webpack.config.dev.js
y haz lo mismonpm start
fuente
En Windows se puede hacer de 2 maneras.
En "\ node_modules \ react-scripts \ scripts \ start.js", busque "DEFAULT_PORT" y agregue el número de puerto deseado.
Por ejemplo: const DEFAULT_PORT = parseInt (process.env.PORT, 10) || 9999;
En package.json, anexe la siguiente línea. "start": "set PORT = 9999 && react-scripts start" Luego inicie la aplicación usando NPM start. Iniciará la aplicación en el puerto 9999.
fuente
¿Qué tal dar el número de puerto mientras se invoca el comando sin necesidad de cambiar nada en el código de su aplicación o en los archivos de entorno? De esa manera, es posible ejecutar y servir la misma base de código desde varios puertos diferentes.
me gusta:
$ export PORT=4000 && npm start
Puede colocar el número de puerto que desee en lugar del valor de ejemplo
4000
anterior.fuente
En caso de que ya lo haya hecho
npm run eject
, vaya a scripts / start.js y cambie el puertoconst DEFAULT_PORT = parseInt(process.env.PORT, 10) || 3000;
(3000 en este caso) al puerto que desee.fuente
Cambiar el puerto predeterminado en React-App
Ve a esta línea:
Cambie el número de puerto con su número de puerto
Por ejemplo:
Guardar y Salir
fuente
npm/yarn install
. El cambio de archivosnode_modules
debe ser evitado.