Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: Ali Baba en 27 Enero 2019, 16:40 pm



Título: Error en handlebars, nodejs, express, y los niveles de directorios
Publicado por: Ali Baba 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
  1. const path = require('path')
  2. const exphbs = require('express-handlebars')
  3.  
  4. const morgan = require('morgan');
  5. const multer = require('multer');
  6. const express = require('express');
  7. const erroHandler = require('errorhandler')
  8. const routes = require('../routes/index');
  9.  
  10. module.exports = app => {
  11.  
  12.    app.set('port', process.env.PORT || 80)
  13.    console.log(__dirname)
  14.    app.set('views', path.join(__dirname, '../views'));
  15.    app.engine('.hbs', exphbs({
  16.    extName: '.hbs',
  17.    defaultLayout: 'main',
  18.    partialsDir: path.join(app.get('views'), 'partials' ),
  19.    layoutDir: path.join(app.get('views'), 'layouts'),
  20.    helpers: require('../helpers')
  21. }))
  22.    app.set('view engine', '.hbs');
  23.  
  24.  
  25.    // middlewares
  26.    app.use(morgan('dev'));
  27.    app.use(multer({dest: path.join(__dirname, '../public/upload/temp')}).single('image'))
  28.    app.use(express.urlencoded({extended: false}));
  29.    app.use(express.json());
  30.  
  31.    //routes
  32.    routes(app)
  33.  
  34.    // static files
  35.    app.use('/public', express.static(path.join(__dirname, '../public')));
  36.  
  37.  
  38.    // errorhandlers
  39.    if ('development' === app.get('env')) {
  40.        app.use(erroHandler)
  41.    }
  42.  
  43.    return app;
  44. }

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: Ali Baba en 27 Enero 2019, 18:28 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: Ali Baba en 29 Enero 2019, 03:20 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