Estoy usando Node.js junto con Express y EJS.
A continuación se muestra mi código:
var express = require('express'); var path = require('path'); var bodyParser = require('body-parser'); var app = express(); var urlencodedParser = bodyParser.urlencoded({ extended: false }); var publicPath = path.resolve(__dirname, 'public'); app.use(express.static(publicPath)); //app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.get('/form_get.html', (req, res) => { res.sendFile(__dirname + "/" + "form_get.html") }) app.get('/process_get', (req, res) => { console.log(req.query.first_name); res.render(path.join(__dirname+'/views/thankyou.ejs'), { name: req.query.first_name}); }) var server = app.listen(3000, () => { var host = server.address().address; var port = server.address().port; console.log(`Example app listening at ${host}:${port}`); })Mi estructura de carpetas es la siguiente:
El problema es que no se puede buscar thankyou.ejs en la carpeta de vistas.
Recibo el siguiente mensaje de error:
Error: no se pudo buscar la vista "thankyou.ejs" en el directorio de vistas ".../mysql/views"
¿Cual puede ser el problema?
Cuando usas app.set('view engine', 'ejs'); Es importante tener en cuenta que res.render() buscará la vista en una carpeta de views . En este caso
Reflejé su proyecto y funciona bien con un par de pequeños cambios...
Proyecto Estructura de carpetas y archivos.
aplicación.js
var express = require("express"); var path = require("path"); var bodyParser = require("body-parser"); var app = express(); var urlencodedParser = bodyParser.urlencoded({ extended: false }); var publicPath = path.resolve(__dirname, "public"); app.use(express.static(publicPath)); app.set("view engine", "ejs"); app.get("/form_get", (req, res) => { res.sendFile(__dirname + "/" + "form_get.html"); }); app.get("/process_get", (req, res) => { res.render("thankyou"); }); var server = app.listen(3000, () => { var host = server.address().address; var port = server.address().port; console.log(`Example app listening at ${host}:http://localhost:${port}`); });Producción:
archivo http://localhost:3000/process_get ( gracias.ejs ).
Producción:
archivo http://localhost:3000/form_get ( form_get.html )