【问题标题】:EJS Template TypeErrorEJS 模板类型错误
【发布时间】:2021-08-06 14:58:06
【问题描述】:

我正在尝试了解有关 Web 开发的更多信息,当我添加该行时,我被困在 EJS 模板上

app.use("视图引擎", "ejs");

服务器停止运行,现在我的网页无法连接。我意识到在这里很难解释我的问题,所以我将我的项目放在 Github 上,这是链接 https://github.com/OffalyPops/todolist-v1.git

我可能做了一些非常愚蠢的事情。请随意下载我的项目,但如果您发现我做错了什么,请留下易于理解的 cmets。

Error Image

【问题讨论】:

标签: javascript html node.js web-applications ejs


【解决方案1】:
  1. 您正在设置视图引擎,而不是使用它们,所以应该是 app.set 而不是 app.use
// From:
app.use("view engine", "ejs");

// To:
app.set("view engine", "ejs");
  1. 请求路由应该是让客户端获取内容,所以它应该是app.get而不是app.set
// From:
app.set("/", function(req, res) { ... }

// To:
app.get("/", function(req, res) { ... }
  1. ejs 中 else case 的语法错误,应该是 { 而不是 (
// From: 
<% } else ( %>n

// To:
<% } else { %>

修复了您的 app.js 中的错误

//jshint esversion:6

const express = require("express");
const date = require(__dirname + "/date.js");

const app = express();

// <!--LIST SETUP-->
const items = ["Jagger", "Vodka", "Beer"];
const workItems = [];

// <!--SETUP EJS TEMPLATE-->
app.set("view engine", "ejs");

app.use(express.urlencoded({extended: true}));
app.use(express.static("public"));

app.get("/", function(req, res) {
  let day = date.getDate();
  res.render("list", {listTitle: day, newListItems: items});
});

// <!--POST ITEMS ON DIFFENT LIST-->
app.post("/", function(req, res){
  const item = req.body.newItem;

  if (req.body.list === "Work") {
    workItems.push(item);
    res.redirect("/work");
  } else {
    items.push(item);
    res.redirect("/");
  }

});

app.get("/work", function(req, res){
  res.render("list", {listTitle: "Work List", newListItems: workItems});
});

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

app.post("/work", function(req, res){
  const item = req.body.newItem;
  workItems.push(item);
  res.redirect("/work");
})

app.listen(3000, function() {
  console.log("Serrer started on port 3000");
});

【讨论】:

  • 我编辑了所有更改,但仍有问题。我也更新了github。
  • 您在 app.js 中似乎有问题,评论应该是 // 而不是 &lt;!-- 并且缺少 {,上面更新了答案。
  • 我在 Atom 中开始了这个项目,然后我改为 inteliJ 看看是否会出现相同的错误,他们确实出现了。我认为 html 中的 cmets 是 和 Java //COMMENTS,
  • html 是 ,JS 是 // 或 /*,app.js 是 javascript 文件
  • 我认为题中的问题已经解决了。如果您觉得有帮助,请采纳答案。
猜你喜欢
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 2023-04-02
  • 2013-04-20
  • 1970-01-01
  • 2018-05-01
相关资源
最近更新 更多