queckezz/koa-views

extends/include issue - koaNunjucks2 vs koa-views

Extarys opened this issue · 2 comments

In koaNunjacks2: - Works
{% extends "master.njk %}

In koa-views: - Nothing works
{% extends "master.njk %}
{% extends "master %}

Same everything, just replacing the view renderer.

Config:

koa.use(koaNunjucks({
  ext: 'njk',
  path: __dirname+'/views',
  nunjucksConfig: {
    trimBlocks: true
  }
}));
var views = views(__dirname+'/views', {
	extension: 'njk',
	map: {
		njk: 'nunjucks'
	},
});
koa.use(views);

Traceback:

[4:42:16] Initialisation...
[4:42:16] NodeJS server started, it is running on port 3000

  Template render error: (unknown path)
    Error: template not found: root
      at Object.exports.prettifyError (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/lib.js:34:15)
      at /media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:489:31
      at eval (eval at _compile (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:568:24), <anonymous>:9:11)
      at createTemplate (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:213:25)
      at next (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/lib.js:210:13)
      at handle (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:253:25)
      at /media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:264:21
      at next (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/lib.js:207:13)
      at Object.exports.asyncIter (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/lib.js:214:5)
      at new_cls.getTemplate (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:243:17)
      at new_cls.root [as rootRenderFunc] (eval at _compile (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:568:24), <anonymous>:8:5)
      at new_cls.render (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:482:15)
      at new_cls.renderString (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/src/environment.js:328:21)
      at Object.module.exports.renderString (/media/DarkHawk/srv/NodesProjects/Vue/node_modules/nunjucks/index.js:80:14)
      at /media/DarkHawk/srv/NodesProjects/Vue/node_modules/consolidate/lib/consolidate.js:1174:11
      at /media/DarkHawk/srv/NodesProjects/Vue/node_modules/consolidate/lib/consolidate.js:144:5

I don't think it's relevant, but below that I'm using Socket.io.

I opened a SO question first before realizing it was working with another package.

Maybe I misconfigured the thing. Yesterday it was working great when I tried Pug though :)

You can look the example code. To use the FileSystemLoader function to set the path.

 it('nunjucks with nunjucksEnv', function (done) {
    const nunjucks = require('nunjucks')
    const env = new nunjucks.Environment(
      new nunjucks.FileSystemLoader(path.join(__dirname, 'fixtures'))
    )
    env.addFilter('shorten', function (str, count) {
      return str.slice(0, count || 5)
    })

    const app = new Koa()
    .use(views(path.join(__dirname, 'fixtures'), {
      options: {
        nunjucksEnv: env
      },
      map: { html: 'nunjucks' }
    }))
    .use(function (ctx) {
      return ctx.render('nunjucks-filter', { message: 'this is a long message' })
    })

I'll just stick with koaNunjacks2, less config. thanks!