Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Mensaje iniciado por: Diesan Romero en 27 Enero 2019, 16:40 PM

Título: Error en handlebars, nodejs, express, y los niveles de directorios
Publicado por: Diesan Romero en 27 Enero 2019, 16:40 PM
Bien, llevo días pasándola muy mal. Estoy creando una web con ExpressJS para NodeJS y pues me presento el siguiente problema:

Código (javascript) [Seleccionar]
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)
Título: Re: Error en handlebars, nodejs, express, y los niveles de directorios
Publicado por: 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?
Título: Re: Error en handlebars, nodejs, express, y los niveles de directorios
Publicado por: Diesan Romero en 27 Enero 2019, 18:28 PM
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
Título: Re: Error en handlebars, nodejs, express, y los niveles de directorios
Publicado por: 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.
Título: Re: Error en handlebars, nodejs, express, y los niveles de directorios
Publicado por: Diesan Romero en 29 Enero 2019, 03:20 AM
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