Utilizo el generador express para construir una API de descanso sin vista primero. Luego cambio todo al script es6 y lo dejo compilar por babel.
Cuando entro en localhost después de los cambios, dice:
No se especificó ningún motor predeterminado y no se proporcionó ninguna extensión
Y descubrí que es por esta parte del código.
router.get('/', function(req, res, next) { res.render('index', { title: 'Express' }); });El error desaparece cuando cambio res.render a res.json
Me pregunto si tengo que asignar un motor de vista si uso babel para compilar mi proyecto. ¿Incluso es una API sin vista?
Para usar vistas en express, debe configurarlo para usar algún motor (pug, ejs, handlebars), consulte la documentación para saber cómo funciona.
El error que mencionas
No se especificó ningún motor predeterminado y no se proporcionó ninguna extensión
significa que no configuró ningún motor de vista, además, al archivo de plantilla le falta la extensión (ig index.pug).
Cuando usa res.render('index', { title: 'Express' }); está llamando al motor de vista para representar el index de la plantilla y pasando algunos valores para usar en él { title: 'Express' } , el resultado es un contenido HTML.
Por otro lado, cuando usa res.json({ title: 'Express' }) está devolviendo un objeto json , esa es la diferencia.
Aquí está el enlace a la documentación de cada uno: