Tengo una aplicación Node.js / Express.js ejecutándose en mi servidor que solo funciona en el puerto 3000 y estoy tratando de averiguar por qué. Esto es lo que encontré:
- Sin especificar un puerto (
app.listen()
), la aplicación se ejecuta pero la página web no se carga. - En el puerto 3001 (
app.listen(3001)
) o cualquier otro puerto que no esté en uso, la aplicación se ejecuta pero la página web no se carga. - En el puerto 2999, la aplicación arroja un error porque otra cosa está usando ese puerto.
- En el puerto 3000, la aplicación se ejecuta y la página web se carga correctamente.
Sé que las aplicaciones Express están predeterminadas en el puerto 3000. Pero, curiosamente, mi aplicación solo se ejecuta cuando hago que se ejecute explícitamente en el puerto 3000 ( app.listen(3000)
).
Encontré esto en la línea 220 de /usr/bin/express
:
app.set(\'port\', process.env.PORT || 3000);
Lo que está haciendo como se indicó anteriormente: configurar el puerto en lo que se especifica o en 3000 si no se especifica nada.
¿Cómo puedo hacer que mi aplicación funcione en un puerto diferente, como 8080 o 3001?
¡Gracias!
Editar: Ejemplo de código (aplicación Node / Express muy simple)
var express = require("express");
var app = express();
app.get('/', function(req, res){
res.send('hello world');
});
// Only works on 3000 regardless of what I set environment port to or how I set [value] in app.set('port', [value]).
app.listen(3000);
.listen()
. Arriba, cuando digo, "la aplicación se ejecuta", es lo mismo que dices, "no hay errores al ejecutar la aplicación". Cuando digo "la página web no se carga", es lo mismo que usted dice, "inaccesible desde un navegador". Todo el acceso desde la misma máquina (mi servidor). Gracias por la respuesta.
$ supervisor app.js
o $ PORT=[PORT] node app.js
cuando quiero establecer la variable del puerto de entorno. Pondré una muestra de código.
port
requiere A.listen()
, por lo que no debería intentar prescindir. 2) ¿Está recibiendo algún error al ejecutar la aplicación? ¿O simplemente parece inaccesible desde un navegador? 3) ¿Está intentando acceder a la página web en la misma máquina conlocalhost:3000
,localhost:3001
, etc.? Si está utilizando dos máquinas, un cliente y un servidor, deberá agregar excepciones al firewall en el servidor para permitir que Node reciba solicitudes del cliente.