TransWikia.com

Como trocar de páginas através do nodejs?

Stack Overflow em Português Asked by Sanches on February 19, 2021

Bom, tentei trocar de página apertar no botão entrar, mas recebo este erro: “path must be absolute or specify root to res.sendFile”.

Minha estrutura de pastas:

inserir a descrição da imagem aqui

Formulário HTML (index.html):

  <div class="bg-modal">
      <form action="/login" class="login-form" method="post">
        <h1>Entrar</h1>
        <div id="close" class="close">+</div>

        <div class="txtb">
          <input type="text">
          <span data-placeholder="RA"></span>
        </div>

        <div class="txtb">
          <input type="password">
          <span data-placeholder="Senha"></span>
        </div>

        <input type="submit" class="logbtn" value="Entrar">

        <div class="bottom-text">
          Não possuí conta? <a id="botaoRegistrar" href="#corpoForm">Crie sua Conta</a>
        </div>

      </form>
  </div>

rotas.js:

//var AlunoDao = require('../app/aluno-dao');
var conexao = require('../config/custom-mssql');

module.exports = (app) => {
    app.get('/', (req, res) => {
        res.sendFile('dashboard.html');
    });
    app.post('/login', (req, res) => {
        console.log("FUNCIONOU");
        res.sendFile('index.html');
    });
}

custom-express.js:

const express = require('express');
const app = express();

const bodyParser = require('body-parser');
//const expressLayouts = require('express-ejs-layouts');

const rotas = require('../app/rotas.js');


// informar o express que vamos usar o EJS como engine de visualização
//app.set('view engine', 'ejs');

// informar o express que vamos usar os módulos relacionados às variaveis abaixo
//app.use(expressLayouts);
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(__dirname + '/views'));
app.use(express.static(__dirname + '/public'));
app.use(express.static('public')); 
app.use(express.static('views')); 
app.use(bodyParser.json());

//acrescentando informacoes de cabecalho para suportar o CORS
app.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    res.header("Access-Control-Allow-Methods", "GET, POST, HEAD, OPTIONS, PATCH, DELETE");
    next();
  });

// passar como parâmetro para o módulo rotas.js
rotas(app);

module.exports = app;

Ao entrar em “localhost:3000” é carregado o index.html (funciona), mas após apertar no botão “entrar” ele cai no método app.post(…) mas não consegue renderizar o dashboard.html. Tentei substituir o res.sendFile(‘index.html’) por res.sendFile(‘dashboard.html’), e ele continua renderizando o index.html. Como isso é possível?

One Answer

Se voçê não entendeu o que o Augusto Vasques comentou, resolva desta maneira:

No seu codigo de rota para o post, passe um objeto como segundo argumento com o atributo root definindo o caminho absoluto para saber qual arquivo html deve ser enviado. Ficaria assim:

    app.post('/login', (req, res) => {
        console.log("FUNCIONOU");
        res.sendFile('dashboard.html', {
          root: path.join(__dirname , 'views')
        });
    });

Feito isso, o express sabera qual arquivo e onde este arquivo esta para ser enviado na resposta.

Correct answer by Cmte Cardeal on February 19, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP