Router.use()需要一个中间函数,但得到一个Object。 module.exports =路由器存在于页面上

时间:2017-11-16 14:52:13

标签: javascript node.js express express-router

来自app.js

 // REQUIRE ROUTES
    var commentRoutes = require("./routes/comments"),
    bpostRoutes = require("./routes/bposts"),
    indexRoutes = require("./routes/index");


   //USE ROUTES
   app.use("/", indexRoutes);
   app.use("/bposts", bpostRoutes);
   app.use("/bposts/:id/comments", commentRoutes);

来自routes / index.js

     var express = require("express");
     var router  = express.Router();

     //LANDING -root route
     router.get("/", function(req, res){
     res.render("landing"); 
   });

   module.exports = router;

我正在尝试在创建数据库之前设置所有路由,或者为博客做一些有意义的事情。当我第一次遇到这个问题时,因为我没有使用

module.exports = router;

在我的每个路线页面上。 Express路由器已安装并保存到package.json。每次我遇到这个错误都是一个快速修复,因为我没有包含export语句。现在我终于记得添加它,我仍然收到此错误消息。任何建议或意见,将不胜感激!

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

TypeError: Router.use() requires a middleware function but got a Object
    at Function.use (/home/ubuntu/workspace/node_modules/express/lib/router/index.js:458:13)
    at EventEmitter.<anonymous> (/home/ubuntu/workspace/node_modules/express/lib/application.js:220:21)
    at Array.forEach (native)
    at EventEmitter.use (/home/ubuntu/workspace/node_modules/express/lib/application.js:217:7)
    at Object.<anonymous> (/home/ubuntu/workspace/app.js:25:5)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:389:7)
    at startup (bootstrap_node.js:149:9)
    at bootstrap_node.js:504:3

1 个答案:

答案 0 :(得分:0)

我使用IDE调用C9(Cloud 9)并且仅使用免费服务,这意味着更低的性能和潜在的停机时间优先考虑付费cx的用户空间。所以我退出了我的帐户并重新登录。然后在启动我的应用程序时清除并清理了工作区。在此之后,我能够毫无问题地预览我的应用程序。时间升级!我在代码中没有任何改变,没有添加或减少。这是我第一次看到它在6个月内发生过我使用它。这确实解决了这个问题。感谢所有的帮助和建议!