【问题标题】:Error: No default engine was specified and no extension was provided. in express错误:没有指定默认引擎,也没有提供扩展。快递
【发布时间】:2021-12-10 02:10:49
【问题描述】:

我是后端 Web 开发的新手,我正在使用 nodejs 和 express.js 进行项目练习 下面是我的 app.js 文件的代码

const express = require("express")
const bp = require("body-parser")
const app = express()
app.set("view-engine", "ejs")

app.get("/", (req, res) => {
const date = new Date()
const curDay = date.getDay()
let day = ""
if (curDay === 6 || curDay === 0){
  day = "weekend"
} else{
  day = "weekday"
}
  res.render("list", {kindOfDay: day})
})

app.listen(3000, () => {
  console.log("Listening on port 3000")
})

下面是我的 list.ejs 文件的代码

<!DOCTYPE html>
<html>
  <head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta charset="UTF-8">
    <title>To-Do List App</title>
  </head>
  <body>
    <h1>It's a <%= kindOfDay %>!</h1>
  </body>
</html>

当我尝试使用 nodemon app.js 命令运行应用程序时,它会向我抛出一个错误提示

错误:未指定默认引擎且未提供扩展名。 在新视图 (/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/view.js:61:11) 在 Function.render (/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/application.js:570:12) 在 ServerResponse.render (/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/response.js:1012:7) 在 /storage/emulated/0/todo-list-app-ver_1/app.js:15:7 在 Layer.handle [as handle_request] (/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/router/layer.js:95:5) 在下一个(/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/router/route.js:137:13) 在 Route.dispatch (/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/router/route.js:112:3) 在 Layer.handle [as handle_request] (/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/router/layer.js:95:5) 在/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/router/index.js:281:22 在 Function.process_params (/storage/emulated/0/todo-list-app-ver_1/node_modules/express/lib/router/index.js:335:12)

预期的输出应该是

今天是工作日

今天是周末

我不知道是什么导致了错误。我的节点版本是 16.13.0 我的快速版本是 4.17.1

【问题讨论】:

  • view-engine 应该是view engine 也加上app.engine('html', require('ejs').renderFile);
  • 我添加了,但现在它显示模块“ejs”未找到然后我再次安装“ejs”仍然显示相同的错误
  • 我删除了整个项目????现在从头开始,做了我以前做的同样的过程,现在它工作了,我不知道发生了什么事情
  • 这些答案解决了你的问题吗?

标签: javascript node.js express ejs nodejs-server


【解决方案1】:

你在app.set("view-engine", "ejs") 中有错字,而应该是app.set("view engine", "ejs"),它就像一个魅力;-)

const express = require("express");

const app = express();
app.set("view engine", "ejs");

app.get("/", (req, res) => {
  const date = new Date();
  const curDay = date.getDay();
  let day = "";
  if (curDay === 6 || curDay === 0) {
    day = "weekend";
  } else {
    day = "weekday";
  }
  res.render("list", { kindOfDay: day });
});

app.listen(3000, () => {
  console.log("Listening on port 3000");
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2020-10-24
    • 2019-02-24
    • 1970-01-01
    • 2014-06-29
    相关资源
    最近更新 更多