【问题标题】:partials not being rendered express-handlebars node部分未呈现 express-handlebars 节点
【发布时间】:2016-12-05 20:57:47
【问题描述】:

我正在尝试使用express-handlebarspartials,但我收到以下错误消息

找不到部分标头。

我的app.js 代码如下所示。

var express = require('express');
var exphbs  = require('express-handlebars');

var app = express();

app.engine('handlebars', exphbs({defaultLayout: 'main'}));
app.set('view engine', 'hbs');

app.get('/', function  (req, res) {
    res.render('home');
});

app.listen(3000);

一切正常,express 应用程序正在 localhost:3000 上运行。

我的文件夹结构如下:

|_app.js
|_views_
        |_home.hbs
        |_layouts_
                  |_main.hbs
        |_partials_
                   |_header.hbs

ma​​in.hbs

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Example App</title>
</head>
<body>

    {{{body}}}

</body>
</html>

header.hbs

<nav>
  <a href="/">Home</a>
  <a href="/contact">Contact</a>
</nav>

home.hbs

{{> header}}

<h1>Hey world!</h1>

在我尝试将 header.hbs 作为部分引入之前,一切都按预期进行。

任何人都可以看到我的代码有任何问题吗?

经过进一步调查,我也尝试了这个,但没有任何成功:

// Create `ExpressHandlebars` instance with a default layout.
var hbs = exphbs.create({
    // Uses multiple partials dirs, templates in "shared/templates/" are shared
    // with the client-side of the app (see below).
    partialsDir: [
        'views/partials/'
    ]
});

// Register `hbs` as our view engine using its bound `engine()` function.
app.engine('hbs', hbs.engine);
app.set('view engine', 'hbs');

【问题讨论】:

    标签: javascript node.js express handlebars.js


    【解决方案1】:

    我相信你错过了下一行:

    exphbs.registerPartials(__dirname + '/views/partials');
    

    【讨论】:

    • TypeError: exphbs.registerPartials 不是函数
    • @CreasolDev 但我正在使用express-handlebars
    【解决方案2】:

    必须为express-handlebars partials 定义以下设置才能工作。

    var handlebars = require('express-handlebars');
    app.engine('hbs', handlebars({ extname: '.hbs' }));
    app.set('view engine', 'hbs');
    

    完整代码如下:

    var handlebars = require('express-handlebars');
    app.engine('hbs', handlebars({ extname: '.hbs' }));
    app.set('view engine', 'hbs');
    
    app.get('/', function (request, response) {
        response.render('home');
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-02
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2020-11-29
      相关资源
      最近更新 更多