簡體   English   中英

router.use()需要中間件功能錯誤

[英]router.use() requires middleware function error

我正在學習node.js,在線上了本教程之后,我決定進行練習。 我正在嘗試設置服務器,但收到錯誤消息:

 throw new TypeError('Router.use() requires middleware function but got a ' + gettype(fn));
      ^

TypeError: Router.use() requires middleware function but got a undefined
    at Function.use (/Users/user/Desktop/Movie_Review_API/node_modules/express/lib/router/index.js:458:13)

我認為路線有問題,但不確定。 這就是我所擁有的

中間件:

import { Router } from "express";

export default({config, db}) => {
  let api = Router();

  return api;
}

路線:

import express from "express";
import config from "../config"; 
import initializeDb from "../db";
import middleware from "../middleware";
import movie from "../controller/movie";

let router = express();

// connect to db
initializeDb(db => {
router.use(middleware({ config, db }));

  // api routes
  router.use("/movie", movie({config, db}));
});

export default router;

服務器

 import http from "http";
    import express from "express";
    import bodyParser from "body-parser";
    import mongoose from "mongoose";
    import config from "./config";
    import routes from "./routes";

    let app = express();
    app.server = http.createServer(app);

    // middleware
    app.use(bodyParser.json({
      limit : config.bodyLimit
    }));

    // passport config

    // api routes v1
    app.use('/v1', routes);

    app.server.listen(config.port);

    console.log(`Started on port ${app.server.address().port}`);

    export default app;

調節器

import mongoose from "mongoose";
import { Router } from "express";
import movie from "../model/movie";
import bodyParser from "body-parser";

export default({config, db}) => {
  let api = Router();

  api.post("/add", (req, res) => {
    let newMovie = new Movie();
    newMovie.name = req.body.name;
    newMovie.rating = req.body.rating;
    newMovie.releaseYear = req.body.releaseYear;
    newMovie.description = req.body.description;

    newMovie.save(err => {
      if(err) {
        res.send(err);
      }
      res.json({message: "Movie saved successfully"});
    });
  });

代表不足,但我建議檢查一下:

app.server.listen(config.port);
//can just be 
app.listen(config.port);

是的,通常,只檢查路線,希望能奏效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM