queckezz/koa-views

Error: template not found: _layout.njk

tomoat opened this issue · 2 comments

"koa-views": "^6.0.1",
"nunjucks": "^3.0.0"

welcome.njk
{% extends '_layout.njk' %}

├── _layout.njk
└── welcome.njk
{ Template render error: (unknown path)
  Error: template not found: _layout.njk
    at Object.exports.prettifyError (/Users/koa-test/node_modules/nunjucks/src/lib.js:34:15)
    at /Users/koa-test/node_modules/nunjucks/src/environment.js:489:31
    at eval (eval at _compile (/Users/koa-test/node_modules/nunjucks/src/environment.js:568:24), <anonymous>:19:11)
    at createTemplate (/Users/koa-test/node_modules/nunjucks/src/environment.js:213:25)
    at next (/Users/koa-test/node_modules/nunjucks/src/lib.js:210:13)
    at handle (/Users/koa-test/node_modules/nunjucks/src/environment.js:253:25)
    at /Users/koa-test/node_modules/nunjucks/src/environment.js:264:21
    at next (/Users/koa-test/node_modules/nunjucks/src/lib.js:207:13)
    at Object.exports.asyncIter (/Users/koa-test/node_modules/nunjucks/src/lib.js:214:5)
    at new_cls.getTemplate (/Users/koa-test/node_modules/nunjucks/src/environment.js:243:17)
    at new_cls.root [as rootRenderFunc] (eval at _compile (/Users/koa-test/node_modules/nunjucks/src/environment.js:568:24), <anonymous>:18:5)
    at new_cls.render (/Users/koa-test/node_modules/nunjucks/src/environment.js:482:15)
    at new_cls.renderString (/Users/koa-test/node_modules/nunjucks/src/environment.js:328:21)
    at Object.module.exports.renderString (/Users/koa-test/node_modules/nunjucks/index.js:80:14)
    at /Users/koa-test/node_modules/consolidate/lib/consolidate.js:1174:11
    at /Users/koa-test/node_modules/consolidate/lib/consolidate.js:144:5
From previous event:
    at promisify (/Users/koa-test/node_modules/consolidate/lib/consolidate.js:137:10)
    at /Users/koa-test/node_modules/consolidate/lib/consolidate.js:157:12
    at getPaths.then (/Users/koa-test/node_modules/koa-views/src/index.js:46:20) name: 'Template render error' }

You should set view path in addition, here's an example:

      .use(views(path.join(__dirname, 'views'), {
        options: {
          settings: {
            views: path.join(__dirname, 'views')
          }
        },
        extension: 'njk',
        map: {
          njk: 'nunjucks'
        }
      }))

Ref: https://github.com/tj/consolidate.js/blob/master/lib/consolidate.js#L1125

OK, Thanks @int64ago