在expess-generator网站

时间:2017-08-28 17:20:15

标签: node.js express handlebars.js

我使用express-generator生成了一个快速网站,我需要引用一个位于views文件夹中的子文件夹内的部分hbs文件。

我的文件夹结构就像这样

enter image description here

在我的主布局文件(layout.hbs)中,我引用了head和nav_bar文件,我得到了一个无法找到头文件的错误

enter image description here

错误是

C:\MovementForNewNigeria\app\views\index.hbs: The partial head could not be found

Error: C:\MovementForNewNigeria\app\views\index.hbs: The partial head could not be found
at Object.invokePartial (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\runtime.js:266:11)
at Object.invokePartialWrapper [as invokePartial] (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\runtime.js:68:39)
at Object.eval (eval at createFunctionContext (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\compiler\javascript-compiler.js:254:23), <anonymous>:6:28)
at main (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\runtime.js:173:32)
at ret (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\runtime.js:176:12)
at ret (C:\MovementForNewNigeria\app\node_modules\handlebars\dist\cjs\handlebars\compiler\compiler.js:525:21)
at C:\MovementForNewNigeria\app\node_modules\hbs\lib\hbs.js:87:17
at C:\MovementForNewNigeria\app\node_modules\hbs\lib\hbs.js:69:11
at done (C:\MovementForNewNigeria\app\node_modules\hbs\lib\async.js:74:20)
at C:\MovementForNewNigeria\app\node_modules\hbs\lib\hbs.js:64:20

3 个答案:

答案 0 :(得分:1)

解决方案是注册部分或更有效地注册所有部分

var hbs = require('hbs');
hbs.registerPartials(__dirname + '/views/partials');

https://github.com/pillarjs/hbs

感谢turmuka帮助进口hbs。

答案 1 :(得分:0)

您需要在此处使用此代码。它将注册您指定的路径。

app.engine('hbs', hbs({
    extname: 'hbs', 
    defaultLayout: 'base', 
    layoutDir: __dirname + '/views/layouts', // for layouts
    partialsDir  : [
        //  path to your partials
        __dirname + '/views/partials',
    ]
}));

答案 2 :(得分:0)

您必须使用“ registerPartials”功能注册部分,如本documentation中所述,但是您必须这样做:

var hbs = require('hbs');
var path = require('path');
hbs.registerPartials(path.join(__dirname + '/views/partials'));

如果跳过“ path.join”部分,则可能会在Windows上出错,例如,因为该路径将是“ C:\ some-dev-folder \ express-app / views / partials”而不是“ C:\ some-dev-folder \ express-app \ views \ partials“