Node js em localhost

Filipe_O

Power Member
Boas Malta,

Estou a aprender node online nas horas vagas, e estou a construir um website com acesso a uma base de dados mysql.
No front tenho um pedido get assíncrono e na parte de node criei um route para "ouvir" os pedidos get,mas o meu ajax não está a cair no route que eu criei.

Front JS:
Código:
$(window).on('load',function(){
    $(".submit").on("click",function(e) {
        var user = $("input[name='user']").val(),
            baseURL = 'http://localhost:8080';

        $.ajax({
            url: baseURL + '/login',
            method: "GET",
            data: {user},
            success: function(data) {
                console.log(data);
           }
        });
    });
});

NodeJS:
Código:
const express = require('express');
const app = express.Router();

app.get('/', function (req, res) {
  res.send('Got a POST request') ;
})

Não coloquei nada á frente da barra, na route, para responder a todos os pedidos. Mas não obtenho qualquer resposta.

Se me puderem ajudar, agradeço
 
Boas,

O que tens mal é que tens uma chamada a um url que acaba com /login e não tens nenhum listener para essa chamada.

Tens duas opções, ou crias uma chamada com /login e ja vais ter acesso ao que queres ou chamas o listener que tens usando apenas url + '/'

O app.get('/') não apanha todos os pedidos que tenham /, mas sim o pedido que basicamente nao tem mais nada.
 
Boas,

O que tens mal é que tens uma chamada a um url que acaba com /login e não tens nenhum listener para essa chamada.

Tens duas opções, ou crias uma chamada com /login e ja vais ter acesso ao que queres ou chamas o listener que tens usando apenas url + '/'

O app.get('/') não apanha todos os pedidos que tenham /, mas sim o pedido que basicamente nao tem mais nada.
Excelente informação ! Muito obrigado.

Mas descobri, que colocando o endereço sem nada á frente, o pedido não é apanhado pelo listener.

EDIT: O listener estava fora do objecto de servidor. Não sei se isso é errado ou não
 
Estas a ver a consola certo? Porque a aparecer alguma coisa é na consola
Sim, estou.

Aqui vai o meu código completo:
Código:
var http = require('http');
var fs = require('fs');
var express = require('express');
var app = express();

http.createServer(function (req, res) {
  fs.readFile('admin/index.html', function(err, html) {
    res.writeHead(200, {'Content-Type': 'text/html'});
    res.write(html);
    res.end();
  });

}).listen(8080);


app.get('/', function (req, res) {
  res.send('Get Request');
})

Sabes-me dizer onde está o meu erro ?
Obrigado
 
Última edição:
Boas Malta,

Estou a aprender node online nas horas vagas, e estou a construir um website com acesso a uma base de dados mysql.
No front tenho um pedido get assíncrono e na parte de node criei um route para "ouvir" os pedidos get,mas o meu ajax não está a cair no route que eu criei.

Front JS:
Código:
$(window).on('load',function(){
    $(".submit").on("click",function(e) {
        var user = $("input[name='user']").val(),
            baseURL = 'http://localhost:8080';

        $.ajax({
            url: baseURL + '/login',
            method: "GET",
            data: {user},
            success: function(data) {
                console.log(data);
           }
        });
    });
});

NodeJS:
Código:
const express = require('express');
const app = express.Router();

app.get('/', function (req, res) {
  res.send('Got a POST request') ;
})

Não coloquei nada á frente da barra, na route, para responder a todos os pedidos. Mas não obtenho qualquer resposta.

Se me puderem ajudar, agradeço
adiciona na rota, a respetiva rota de login que pretendes. Ou seja,

Código:
app.get('/login', function (req, res) {
  res.send('Got a POST request') ;
})

O teu output será apresentado na consola do browser. Se quiseres ter a certeza que chega à rota coloca um console.log("-->Hello from get login function!");
 
Descobri o erro.

Depois de colocar a porta em que a route vai estar á escuta, funciona corretamente:
Código:
app.listen(port, () => console.log(`Example app listening on port ${port}!`))

A minha questão é: como eu criei um objecto de servidor, a route não deveria escutar na mesma porta que está definida para o objecto servidor ?
A route supostamente é um listener que actua dentro do servidor. Não ?
 
Back
Topo