Búsqueda de sitios web

typescript - No se puede acceder a los endpoints de node.js express en el navegador, pero postman funciona perfectamente


Estoy trabajando en una aplicación de Express localmente. Tengo una ruta en mi aplicación que se ve así

rootRouter.get('/', async (_: Request, res: Response) => {
  res.status(OK).send('Hello!');
});

Ejecución de línea de comandos

node -r module-alias/register ./dist --env=development

Comportamiento del navegador:

No puedo ver la ruta a través de mi navegador localhost:6000. Veo "No se puede acceder a este sitio". Es así para todas las URLs. No veo que aparezca nada en los registros de mi servidor.

Comportamiento del cartero:

Cuando accedo a la misma ruta localhost:6000 con una solicitud GET en Postman, veo el texto "¡Hola!". Registros - GET/200 0.354 ms - 25

Heroku ejecutar

heroku local web -p=5000 (llama al mismo node -r module-alias/register ./dist --env=development que arriba, pero usa el puerto 5000 en su lugar)

Comportamiento del navegador:

PUEDO ver la ruta a través de mi navegador localhost:5000. Veo "¡Hola!". Veo la solicitud en mis registros

8:44:45 PM web.1 |  GET / 200 0.517 ms - 25
8:44:45 PM web.1 |  GET /favicon.ico 200 1.928 ms - 12014

Comportamiento del cartero:

También funciona, veo "¡Hola!", registros - 9:01:29 PM web.1 | GET/200 0.193 ms - 25

Código de servidor aproximado:

const app = express();

app.use(express.json());
app.use(express.urlencoded({extended: true}));
app.use(cookieParser());
app.use(morgan('dev'));
app.use('/', rootRouter); //contains my route that I posted above

// error handling
app.use((err: Error, _: Request, res: Response, __: NextFunction) => {
  const message = err.message;
  return res.status(500).json({ error: message });
});

const viewsDir = path.join(__dirname, 'views');
app.set('views', viewsDir);

const staticDir = path.join(__dirname, 'public');
app.use(express.static(staticDir));

Respuesta #1

El Problema

Me di cuenta de cuál era el problema. Específicamente, el puerto 6000 está prohibido por muchos navegadores. https://chromium.googlesource.com/chromium/src.git/+/refs/heads/master/net/base/port_util.cc

Fue Firefox el que me ayudó a resolverlo, ya que su mensaje de error es mucho más específico que el de Chrome.

Mensaje de error de Firefox:

"Esta dirección está restringida. Esta dirección utiliza un puerto de red que normalmente se usa para fines distintos a la navegación web. Firefox ha cancelado la solicitud para su protección."