es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo colocar el servidor en el mismo puerto donde se está ejecutando el código del cliente en el servidor en vivo?

Estoy abriendo index.html con la extensión Live Server para VS Code, por lo que sé que se está alojando en http://127.0.0.1:5500.

Cuando intento ejecutar un archivo server.js en el puerto 5500, como este:

const app = express();
app.listen(5500, () => console.log(‘escuchando en el puerto 5500…’));

me da el siguiente error:

Error: listen EADDRINUSE: dirección ya en uso :::5500

¿Cómo puedo alojar ambos en el mismo lugar o, alternativamente, si elijo alojar el servidor en el puerto 3000, cómo puedo configurar el código HTML para que vaya al lugar correcto?

<form action="/frases" method="post">
    <input id='frase' type="text" name="frasefavorita">
    <button id='send-frase' type="submit">Enviar</button>
</form>
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para alojar tanto el archivo index.html como el archivo server.js en el mismo puerto, debes usar el middleware express.static para servir archivos estáticos como HTML, CSS y archivos JavaScript desde la carpeta public. Puedes crear una carpeta public en tu carpeta de proyecto y mover el archivo index.html a esa carpeta. Luego, puedes usar el siguiente código para servir la carpeta public:

    const express = require('express');
    const app = express();
    
    // Servir los archivos estáticos desde la carpeta public
    app.use(express.static('public'));
    
    // Iniciar el servidor
    app.listen(5500, () => console.log('escuchando en el puerto 5500...'));
    

    Ahora, cuando vayas a http://127.0.0.1:5500, la página index.html se servirá desde la carpeta public.

    Alternativamente, si decides alojar el servidor en el puerto 3000, puedes actualizar la acción del formulario en tu código HTML para que apunte a ese puerto cambiando el número de puerto en la URL:

    <form action="http://127.0.0.1:3000/frases" method="post">
      <input id='frase' type="text" name="frasefavorita">
      <button id='send-frase' type="submit">Enviar</button>
    </form>
    

    Esto enviará los datos del formulario al servidor que se ejecuta en el puerto 3000.

Comments are closed.