使用hbs并获得“路径参数”错误.Join必须是字符串

Using hbs and getting error of "Arguments to path.join must be strings"?

本文关键字:Join 错误 字符串 路径参数 参数 hbs 路径 使用      更新时间:2023-09-26

我想使用hbs和express将一些模板应用到JSON数据(最终将从url获取数据)。作为一个使用express 4的新手,我发现很多以前的帖子和解决方案真的很困惑,因为express 4中有些功能贬值了。我组合了一些代码片段,得到了这样的结果:

  var engines = require('consolidate');
  var express = require('express');
  var hbs = require('hbs');
  app = express();

    app.set('views', __dirname+ '/views');
    app.set('view engine', 'hbs');
    app.set("view options", { layout: true });

  // ROUTES
      app.get('/', function (req, res){ 
    var data = {"employees":[
      {"firstName":"John", "lastName":"Doe"}, 
      {"firstName":"Anna", "lastName":"Smith"},
      {"firstName":"Peter", "lastName":"Jones"}
  ]}

          res.render('index', JSON.stringify(data));
      }); 
      app.listen(3000);

我也试过只是把一个简单的字符串在res.render,如

         res.render('index', 'haha');

但它仍然不起作用。有什么见解吗?

编辑:模板的目录是

        views
            - index.hbs

实际上我只写了

         <hi> Hi </h1>

render的第二个参数是一个对象,而不是字符串。只要通过data

编辑:你也设置layout: true,但你没有layout.hbs。将其设置为false和索引。HBS应该渲染

Edit2:完整的工作示例

index.js

var engines = require('consolidate');
var express = require('express');
var hbs = require('hbs');
app = express();

app.set('views', __dirname + '/views');
app.set('view engine', 'hbs');
app.set("view options", { layout: false });

// ROUTES
app.get('/', function (req, res){
    var data = {
        "employees":[
            {"firstName":"John", "lastName":"Doe"},
            {"firstName":"Anna", "lastName":"Smith"},
            {"firstName":"Peter", "lastName":"Jones"}
        ]
    };
    res.render('index', data);
});
app.listen(3000);

视图/index.hbs

{{#each employees}}
    Name: {{firstName}}<br>
{{/each}}