Bien, llevo días pasándola muy mal. Estoy creando una web con ExpressJS para NodeJS y pues me presento el siguiente problema:
const path = require('path')
const exphbs = require('express-handlebars')
const morgan = require('morgan');
const multer = require('multer');
const express = require('express');
const erroHandler = require('errorhandler')
const routes = require('../routes/index');
module.exports = app => {
app.set('port', process.env.PORT || 80)
console.log(__dirname)
app.set('views', path.join(__dirname, '../views'));
app.engine('.hbs', exphbs({
extName: '.hbs',
defaultLayout: 'main',
partialsDir: path.join(app.get('views'), 'partials' ),
layoutDir: path.join(app.get('views'), 'layouts'),
helpers: require('../helpers')
}))
app.set('view engine', '.hbs');
// middlewares
app.use(morgan('dev'));
app.use(multer({dest: path.join(__dirname, '../public/upload/temp')}).single('image'))
app.use(express.urlencoded({extended: false}));
app.use(express.json());
//routes
routes(app)
// static files
app.use('/public', express.static(path.join(__dirname, '../public')));
// errorhandlers
if ('development' === app.get('env')) {
app.use(erroHandler)
}
return app;
}
y me da este error:
Error: ENOENT: no such file or directory, open 'C:\Users\Diesan Romero\Desktop\redsocial\views\layouts\main.handlebars'
yo pensé que si subía un nivel, podría entonces encontrar la carpeta pero resulta que no:
Error: Failed to lookup view "index" in views directory "C:\Users\Diesan Romero\Desktop\redsocial\src\server\views"
Aquí les dejo una imagen para que se guíen bien, por el directorio y ojalá me puedan ayudar
(https://i.imgur.com/6U6v8Y8.png)
Si:
app.set('views', path.join(__dirname, '../views'));
devuelve:
C:\Users\Diesan Romero\Desktop\redsocial\src\server\views
Entonces:
app.set('views', path.join(__dirname, '../../views'));
debería devolver:
C:\Users\Diesan Romero\Desktop\redsocial\src\views
- Pero depende de lo que devuelva __dirname, por cierto que devuelve?
Cita de: EdePC en 27 Enero 2019, 17:33 PM
Si:
app.set('views', path.join(__dirname, '../views'));
devuelve:
C:\Users\Diesan Romero\Desktop\redsocial\src\server\views
Entonces:
app.set('views', path.join(__dirname, '../../views'));
debería devolver:
C:\Users\Diesan Romero\Desktop\redsocial\src\views
- Pero depende de lo que devuelva __dirname, por cierto que devuelve?
devuelve C:\Users\Diesan Romero\Desktop\redsocial\src\server
cuando subo un nivel de directorio me da este error
Error: ENOENT: no such file or directory, open 'C:\Users\Diesan Romero\Desktop\redsocial\views\layouts\main.handlebars'
lógicamente hay algo que no está bien
Yo no veo un archivo llamado main.handlebars dentro de la carpeta layouts. El error es de que no se encontro el archivo.
Cita de: EFEX en 29 Enero 2019, 01:37 AM
Yo no veo un archivo llamado main.handlebars dentro de la carpeta layouts. El error es de que no se encontro el archivo.
no, fíjate bien en la ruta completa