Я получаю эту ошибку, когда запускаю свое приложение express - PullRequest
0 голосов
/ 01 августа 2020

Я получаю ошибку типа на Express промежуточном программном обеспечении маршрутизатора. Ниже указаны коды и ошибки. Любая помощь?

Приложение работает нормально, но когда я нажимаю URL-адрес в браузере, это вызывает ошибку в консоли.

Вот мое приложение. js файл

приложение. js

//jshint esversion:6
const express = require('express');
const bodyParser = require('body-parser');

const app = express();
app.use("view engine", "ejs");
app.get("/", function(req, res) {
  // res.send("Hello");
  var today = new Date();
  console.log(date);
  var currentDay = today.getDay();
  var day = "";
  console.log(currentDay);
  if (currentDay === 6 || currentDay === 0) {
    // res.send("yay! it's weekend. ");
    day = "weekend";
  } else {
    day = "weekday";

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



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

Вот list.e js файл

list.e js

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title>to do list</title>
  </head>
  <body>
    <h1>It's a <%= kindOfDay %>!</h1>
  </body>
</html>

ошибка

E:\todoList-v1\node_modules\express\lib\router\index.js:458
          throw new TypeError('Router.use() requires a middleware function but 
    got a ' + gettype(fn))
      ^

TypeError: Router.use() requires a middleware function but got a string    
    at Function.use (E:\todoList-v1\node_modules\express\lib\router\index.js:458:13)
    at Function.<anonymous> (E:\todoList-v1\node_modules\express\lib\application.js:220:21)
    at Array.forEach (<anonymous>)
    at Function.use (E:\todoList-v1\node_modules\express\lib\application.js:217:7)
    at Object.<anonymous> (E:\todoList-v1\app.js:6:5)
    at Module._compile (internal/modules/cjs/loader.js:1133:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1153:10)
    at Module.load (internal/modules/cjs/loader.js:977:32)
    at Function.Module._load (internal/modules/cjs/loader.js:877:14)       
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:74:12)

Я получил вышеуказанную ошибку, как указано выше

1 Ответ

3 голосов
/ 01 августа 2020

Это

app.use("view engine", "ejs");

должно быть

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

app.use используется для применения функций промежуточного ПО. Чтобы установить переменные express, вам нужно использовать app.set. Вот почему вы получаете сообщение об ошибке, потому что app.use ожидает функцию / обратный вызов промежуточного программного обеспечения, например function(req, res) {...}

...