Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

150
Vistas
404 al hacer una solicitud de ruta expresa

Estoy tratando de entender express y cómo maneja las rutas.

Tengo un dominio configurado con la siguiente estructura

 / app.js /public_html index.html

En app.js, configuré mi servidor express:

 let app = express(); app.post('/list', (request, response) => { //get data then... response.send(data) }); app.use(express.static('public_html')) app.listen(3000, function(){ console.log('listening'); });

Ejecuto la aplicación con el node app.js

Luego, en index.html en el directorio public_html, intento solicitar los datos. Acabo de hacer un simple:

 fetch('/list').then(function(response) { console.log(response) })

Pero obtengo un 404 como respuesta.

Estoy un poco confundido acerca de un par de cosas:

  1. Mi servidor web (Apache/Ubuntu) está configurado para servir html desde el directorio public_html de forma predeterminada. ¿Eso significa que toda la estructura de mi aplicación de nodo debe moverse a la carpeta public_html y el html real debe moverse a una carpeta static o algo así?

  2. ¿Qué pasa con el puerto? La aplicación de nodo escucha en el puerto 3000, pero no estoy seguro de cómo (o si) realizar una solicitud a ese puerto específicamente.

  3. Ruta de ruta: estoy publicando en /list , pero ¿debería ser ../list ?

Todavía no he encontrado una configuración para esta aplicación que funcione todavía. Cualquier ayuda sería apreciada.

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Utilice el siguiente código. Use ajax en lugar de buscar y el método debe ser POST. Fetch no funciona, ya que recibe una solicitud de forma predeterminada.

Opción 1

 $.ajax({ method: "POST", url: "/list" }) .done(function( msg ) { alert( "Data " + msg ); });

Opción 2 Cambiar solo el siguiente código => POST to GET

 app.get('/list', (request, response) => { //get data then... response.send(data) });

Opción 3 Usar POST en buscar

 fetch("/list", { method: "POST" }) .then(function(data){ alert( "Data " + data ); })

Gracias a @vesse por sugerir la opción 3

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

about 4 years ago · Santiago Trujillo Denunciar

0

Mi servidor web (Apache/Ubuntu) está configurado para servir html desde el directorio public_html de forma predeterminada. ¿Eso significa que toda la estructura de mi aplicación de nodo debe moverse a la carpeta public_html y el html real debe moverse a una carpeta estática o algo así?

Node.js y Apache pueden usar la misma carpeta estática sin conflicto, pero ambos no pueden escuchar en el mismo puerto. Es probable que su servidor Apache ya se esté ejecutando en el puerto 80. Si su servidor Node.js se ejecuta en el puerto 3000, las solicitudes al puerto 80 no coincidirán con las rutas que escriba en su aplicación y, por lo tanto, el 404 regresará (a menos, por supuesto, que haya tenido el mismo rutas en una aplicación alojada en Apache independiente).

¿Qué pasa con el puerto? La aplicación de nodo escucha en el puerto 3000, pero no estoy seguro de cómo (o si) realizar una solicitud a ese puerto específicamente.

Dado que es probable que Apache ya esté escuchando en el puerto 80, cualquier solicitud que envíe a http://localhost llegará a su servidor Apache. En su lugar, debe realizar solicitudes que incluyan un número de puerto, http://localhost:3000 llegará a su servidor Node.js.

Ruta de ruta: estoy publicando en /list, pero ¿debería ser ../list?

No, debe publicar en / list y también considerar todos los puntos que Rakesh hizo en su respuesta para que coincida correctamente POST con POST de cliente a servidor o cambie a GET si eso es más apropiado. Como en el segundo punto, asegúrese de publicar en http://localhost:3000 y no solo en http://localhost . Como usted señaló, uno es Apache y el otro es Node.js

Finalmente, aquí está la línea de código del servidor estático que uso cuando sirvo desde una carpeta que se encuentra junto a la secuencia de comandos de mi aplicación:

 app.use('/', express.static(__dirname + '/public_html'));

Con esto, todos los archivos que coloque en la carpeta public_html se vuelven navegables en su aplicación, que también incluye todo lo relacionado con Apache. Tenga en cuenta que __dirname es siempre el directorio desde el que se ejecuta el script que se está ejecutando actualmente. Para visitar este sitio, simplemente vaya a http://localhost:3000 en su navegador y debería ver su archivo de índice.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda