2016-11-14 15 views
0

我運行ExpressJS並安裝了Handlebars作爲模板引擎。我正在使用AdminLTE,並將其拆分爲/views/layouts中的6個hbs文件。我把AdminLTE模板放在public文件夾中。如何解決無法找到部分頭部把手

views/layouts 
    -- base.hbs // as defaultLayout 
    -- footer.hbs 
    -- head.hbs 
    -- js.hbs 
    -- nav.hbs 
    -- sidebar.hbs 

我取得節點上的控制檯每次以下錯誤,當我嘗試訪問本地主機:3000

Error: The partial head could not be found 

這裏是我的app.js設置:

var express = require('express'); 
var path = require('path'); 
var favicon = require('serve-favicon'); 
var logger = require('morgan'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var flash = require('express-flash'); 
var session = require('express-session'); 
var mongoose = require('mongoose'); 
var validator = require('express-validator'); 
var override = require('method-override'); 
var hbs = require('express-handlebars'); 

var routes = require('./routes/index'); 
var users = require('./routes/users'); 

var app = express(); 

// view engine setup 
app.engine('hbs', hbs({extname: 'hbs', defaultLayout: 'base', layoutDir: __dirname + '/views/layouts'})); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'hbs'); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ 
    extended: false 
})); 
app.use(cookieParser()); 
app.use(express.static(path.join(__dirname, 'public'))); 
app.use(session({secret: "1234"})); 
app.use(flash()); 
app.use(validator()); 
app.use(override(function(req, res) { 
    if (req.body && typeof req.body == 'object' && '_method' in req.body) { 
    var method = req.body._method; 
    delete req.body._method; 
    return method; 
    } 
})); 
[...] 

這是我base.hbs文件:

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    {{> head}} 
    </head> 
    <body class="hold-transition skin-blue sidebar-mini"> 
    <div class="wrapper"> 
     {{> nav}} 
     {{> sidebar}} 

     <div class="content-wrapper"> 
     {{{ body }}} 
     </div> 

     {{> footer}} 
     <div class="control-sidebar-bg"></div> 

     {{> js}} 

    </div> 
    </body> 
</html> 

回答

1

您需要在配置express-handlebars時將路徑註冊到partials目錄,並將您的部分移至該文件夾。

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

我已經註冊諧音路徑,但我得到這個錯誤'類型錯誤:無法讀取的undefined' – metaphor

+0

財產「哈希」我需要一個較長的錯誤堆棧有任何幫助。 –

+0

'TypeError:無法讀取對象未定義的 的屬性'哈希'。 (/home/bill/Websites/public_html/nodejs-apps/codepolitan/node_modules/handlebars/dist/cjs/handlebars/helpers/if.js:16:17) at Object.eval [as main](eval at createFunctionContext (/home/bill/Websites/public_html/nodejs-apps/codepolitan/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:254:23),:6:32)' – metaphor

相關問題