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:
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?
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP