Express res.render 渲染了错误的文件
Express res.render renders the wrong file
我已经设置了一个服务器来使用 Handlebars 作为视图引擎。在主页的 GET 请求上使用 res.render
可以正确呈现页面,但是使用 res.render
呈现主页以外的页面会呈现相同的页面。即使使用 res.send
也会发送主车把页面,但表达式保持不变。
这是我的代码:
const express = require("express");
const subdomain = require("express-subdomain");
const handlebars = require("express-handlebars");
const path = require("path");
const bodyParser = require("body-parser");
const app = express();
const subdomain = express.Router();
app.set("views", path.join(__dirname, "/views/layouts"));
app.set("view engine", "handlebars");
app.engine("handlebars", handlebars({
"layoutsDir": path.join(__dirname + "/views/layouts")
}));
subdomain.use(bodyParser.json());
subdomain.use(bodyParser.urlencoded({"extended": true}));
subdomain.get("/", (req, res) => {
res.send("books/index.html");
});
subdomain.get("/books", (req, res) => {
let data = {};
res.render("books", data);
});
app.use(express.static("public"));
app.use(subdomain("subdomain", subdomain));
app.get("/index", async (req, res) => {
let data = {};
res.render("main", data);
});
server = app.listen(8080, () => {
console.log("listening to requests on port " + 8080);
});
很明显,我想生成一个页面,而不仅仅是我网站上的主页。我做错了什么?
看起来你在做同样的事情两次
而不是:
app.set("views", path.join(__dirname, "/views/layouts"));
app.set("view engine", "handlebars");
app.engine("handlebars", handlebars({
"layoutsDir": path.join(__dirname + "/views/layouts")
}));
可能
// view engine setup
app.set("views", path.join(__dirname, "/views/layouts"));
app.set("view engine", "hbs");
已编辑:
检查编辑,"hbs" 而不是 "handlebars"。我在我的 package.json 依赖项 "hbs" 中有这个:“~4.0.4”,或者检查 github.com/sahat/hackathon-starter 一个完整的样板
我已经设置了一个服务器来使用 Handlebars 作为视图引擎。在主页的 GET 请求上使用 res.render
可以正确呈现页面,但是使用 res.render
呈现主页以外的页面会呈现相同的页面。即使使用 res.send
也会发送主车把页面,但表达式保持不变。
这是我的代码:
const express = require("express");
const subdomain = require("express-subdomain");
const handlebars = require("express-handlebars");
const path = require("path");
const bodyParser = require("body-parser");
const app = express();
const subdomain = express.Router();
app.set("views", path.join(__dirname, "/views/layouts"));
app.set("view engine", "handlebars");
app.engine("handlebars", handlebars({
"layoutsDir": path.join(__dirname + "/views/layouts")
}));
subdomain.use(bodyParser.json());
subdomain.use(bodyParser.urlencoded({"extended": true}));
subdomain.get("/", (req, res) => {
res.send("books/index.html");
});
subdomain.get("/books", (req, res) => {
let data = {};
res.render("books", data);
});
app.use(express.static("public"));
app.use(subdomain("subdomain", subdomain));
app.get("/index", async (req, res) => {
let data = {};
res.render("main", data);
});
server = app.listen(8080, () => {
console.log("listening to requests on port " + 8080);
});
很明显,我想生成一个页面,而不仅仅是我网站上的主页。我做错了什么?
看起来你在做同样的事情两次
而不是:
app.set("views", path.join(__dirname, "/views/layouts"));
app.set("view engine", "handlebars");
app.engine("handlebars", handlebars({
"layoutsDir": path.join(__dirname + "/views/layouts")
}));
可能
// view engine setup
app.set("views", path.join(__dirname, "/views/layouts"));
app.set("view engine", "hbs");
已编辑:
检查编辑,"hbs" 而不是 "handlebars"。我在我的 package.json 依赖项 "hbs" 中有这个:“~4.0.4”,或者检查 github.com/sahat/hackathon-starter 一个完整的样板