首页 > 解决方案 > TypeError:res.render 不是函数,同时尝试使用 express 和 ejs 在服务器端使用视图引擎

问题描述

我正在阅读有关模板的教程。我只是遵循“代码沿用”规则来学习使用模板。我收到错误说 res.render 不是函数。但是在导师中做的同样的事情能够产生结果。

这是我使用 Express(节点)的代码:

const express = require('express');
const bodyParser = require('body-parser');
const app = express();

app.set('view engine', 'ejs');

app.get('/', function(res, req) {

  var today = new Date();
  var currentDay = today.getDay();
  var day = "";

    switch (currentDay) {
      case 0:
        day = "Sunday";
        break;
      case 1:
        day = "Monday";
        break;

      case 2:
        day = "Tuesday";
        break;

      case 3:
        day = "Wednesday";
        break;

      case 4:
        day = "Thursday";
        break;

      case 5:
        day = "Friday";
        break;

      case 6:
        day = "Saturday";
        break;

      default:
      console.log("Error: Current day is " + currentDay);

    }

   res.render("list.ejs", {
      kindOfDay:day
  });

});

app.listen(3000, function() {
  console.log("Server is running in port:3000");
});

在使用模板的快速文档中,它显示在 res.render() 中也使用扩展名。也试过了。仍然显示“错误:res.render 不是函数”。
- kindOfDay 是我在视图目录中的 list.ejs 文件中使用的 ejs 元素。

标签: expressejs

解决方案


对于您编写的 app.get() 方法 app.get('/', function(res, req) { code ... res.render("list.ejs", {kindOfDay:day }); 尽管我们可以提供您选择的任何参数作为(res,req)回调函数中的参数,但实际上您也必须编写req.render(...) (request, response)或者您可以为约定更改参数,(req, res)然后就可以了。

也许这只是一个错字。有关更多信息,请查看快速文档


推荐阅读