2017-06-28 10 views
0

構造:KOA-ビューnunjucks:エラー:見つからないテンプレート:マスター

|-server.js 
|-views/ 
    |-master.njk 
    |-index.njk 

興亜・ビューの設定:

logit("Koa-views : subfolder used: /views"); 
var views = views('./views', { //note that I removed the __dirname to test if it was the cause 
    extension: 'njk', 
    map: { 
     njk: 'nunjucks' 
    }, 
    options: { 
     helpers: { 
      uppercase: (str) => str.toUpperCase(), 
      lowercase: (str) => str.toLowerCase(), 
     }, 

    } 
}); 
koa.use(views); 

index.njk

{% extends "master" %} 
{% block content %} 
    <h1>Pretty lame content...</h1> 
{% endblock %} 

master.njk

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title></title> 
    </head> 
    <body> 
     "Master page here" => {% block content %}{% endblock %} 
    </body> 
</html> 

ログ出力は:

NodeJS server started, it is running on port 3000 

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

私はすべてのファイルが777と同じユーザーをchmodしていることを確認してください。 変数を1つだけ置き換えて、レンダリング関数で渡すとしたら、機能します。しかし、含めると拡張が見えます。

私は別のバックエンドで別のプロジェクトで試したし、それが働いている - しかし、私はすべてのソースコードを通過し、それを把握するために十分ではないよ:(

私はトレースバックは、より詳細なたことを望む、何の完全なパス:(

編集 私はこれは私が

router.get('/', async function (ctx, next) { 
    await ctx.render('index', {test: 'Hello'}) 
}) 

編集2templaceを呼び出す方法です、忘れてしまいました私はkoaNunjucks2ライブラリを使ってみました。これは、拡張の最後に.njkを置いたときに動作します。パッケージkoa-viewsに関連している必要があります。

+0

'VARビュー=ビュー(」./ views''非常に奇妙なコードであるあなたが本当に' views'関数をオーバーライドしたいです –

+0

'views'機能を備えています。? [koa-view doc](https://github.com/queckezz/koa-views)を参照してください。私はGitHubでも問題をオープンしました。 – Jayd

答えて

0

これを試してください。

const Koa = require('koa'); 
const views = require('koa-views'); 
const nunjucks = require('nunjucks'); 
const nunjucksEnvironment = new nunjucks.Environment(
    new nunjucks.FileSystemLoader(path.join(__dirname, './views')) 
); 

const koa = new Koa(); 

koa.use(views(path.join(__dirname, './views'), { 
    extension: 'njk', 
    options: { 
     nunjucksEnv: nunjucksEnvironment 
    }, 
    map: { njk: 'nunjucks' } 
})); 

参考:https://github.com/queckezz/koa-views/blob/6994e23e0f02a83d30b3ab9bea56ae79b37a07fa/test/index.js#L252

関連する問題