IIC2513-2021-2 / project

Repositorio oficial para el proyecto del curso IIC2513, período 2021-2
32 stars 1 forks source link

Problema al conectar rutas: ReferenceError #8

Open bvasquezm opened 2 years ago

bvasquezm commented 2 years ago

Hola,

He estado atascado con un problema de rutas que no he logrado averiguar a qué se debe. Resulta que definí dentro del archivo routes/index.js lo siguiente:

router.get('/', async (ctx) => {
  await ctx.render('index', {
    usersPath: ctx.router.url('users.index'),
  });
});

y dentro del archivo routes/users.js:

router.get('users.index', '/', async (ctx) => {
  await ctx.render('users/index');
});

todo el resto del archivo es tal como se muestra en la ayudantía (se importa, crea, exporta el router correctamente). Además de conectarse las rutas en el archivo routes.js. El problema surge cuando trato de acceder a usersPath en index.html.ejs, el cual no es reconocido como una ruta y lanza el error:

ReferenceError: usersPath is not defined

Me gustaría entender cuál es el problema, pero no le encuentro solución aparente. Espero se haya entendido y gracias de antemano.

meretamal commented 2 years ago

Hola, en el archivo routes.js hiciste que el router definido ahí usara las rutas de users?

bvasquezm commented 2 years ago

Hola, en el archivo routes.js hiciste que el router definido ahí usara las rutas de users?

Sisi, lo tengo así:

const KoaRouter = require('koa-router');

const index = require('./routes/index');
const users = require('./routes/users');

const router = new KoaRouter();

router.use('/', index.routes());
router.use('/users', users.routes());

module.exports = router;
LeoMo-27 commented 2 years ago

Hola! El index que te esta tirando el ReferenceError es el que esta en la ruta views/users/index? Porque lo que se me ocurre que puede ser es que (en caso de que estes tratando de hacer render de este) estas tratando de acceder a usersPath en ese archivo pero no se lo estas pasando en los parametros de render. Puede ser que la solución sea la siguiente:

router.get('users.index', '/', async (ctx) => {
  await ctx.render('users/index', {
    usersPath: ctx.router.url('users.index'),
  });
});
bvasquezm commented 2 years ago

Ahí funcionó, muchas gracias!!! :smile: