Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express.js(4.13.1)和Handlebar视图引擎-如何设置?_Node.js_Express_Handlebars.js - Fatal编程技术网

Node.js Express.js(4.13.1)和Handlebar视图引擎-如何设置?

Node.js Express.js(4.13.1)和Handlebar视图引擎-如何设置?,node.js,express,handlebars.js,Node.js,Express,Handlebars.js,我的项目目录称为travel,它具有必需的依赖项node_模块和一个称为views的子目录。视图子目录有layouts子目录。在~/travel/views/layouts中有用于视图的.handlebar模板。但当我进入浏览器并键入localhost:3000/about或localhost:3000时,不管我得到404-notfound,我都尝试切换res.renderabout;恢复渲染/视图/布局/关于;但这也行不通。这与路径有关,但我不确定是什么 var express=require

我的项目目录称为travel,它具有必需的依赖项node_模块和一个称为views的子目录。视图子目录有layouts子目录。在~/travel/views/layouts中有用于视图的.handlebar模板。但当我进入浏览器并键入localhost:3000/about或localhost:3000时,不管我得到404-notfound,我都尝试切换res.renderabout;恢复渲染/视图/布局/关于;但这也行不通。这与路径有关,但我不确定是什么

var express=require("express");

var app=express();

// set up handlebars view engine
var handlebars=require("express3-handlebars")
    .create({defaultLayout:"main"});
app.engine("handlebars",handlebars.engine);
app.set("view engine","handlebars");

app.set("port",process.env.PORT || 3000);

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


// custom 404 page (middleware)
app.use(function(req,res,next){
    res.status(404);
    res.render("404");
});

// custom 500 page (middleware)
app.use(function(err,req,res,next){
    console.error(err.stack);
    res.status(500);
    res.render("500");
});

app.listen(app.get("port"),function(){
    console.log("Express started on http://localhost:"+app.get("port")+";press ctrl+c to terminate,");
});

假设在与Express应用程序脚本相同的目录中有一个名为views的子目录,则需要将Express设置为:

默认情况下,路径相对于当前工作目录


此外,您可能希望将express3 Handlebar模块更新为express3 Handlebar,因为后者是两个模块中较新的一个,并且是当前维护人员推荐的。请通过覆盖默认布局尝试此操作

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

res.render./views/layouts/about会发生什么?请注意前面的点。向我们显示您的应用程序文件夹structure@sam100rav我的项目根目录-~/travel,其中包含travel.js,如上图所示,以及2个文件夹-node_modules文件夹和views文件夹。“视图”文件夹包含layouts文件夹,其中包含/about和/的.handlebar模板。因此视图的模板位于~/travel/views/layouts中,我还将我的工作目录设置为~/travel@hassansin都一样。不起作用我试图将.handlebar模板从~/travel/views/layouts移动到~/travel,但仍然不起作用
app.get('/', function (req, res, next) {
res.render('home', {layout: false}); });