【问题标题】:Express router and routes Node.jsExpress 路由器和路由 Node.js
【发布时间】:2018-08-20 10:58:00
【问题描述】:

我在尝试路由时收到此错误

我的代码

'use strict';

const express = require('express');
const app = express ();
const chatCat = require ('./app');


app.set('port', process.env.PORT || 3000);
app.use(express.static('public'));
app.set('view engine', 'ejs');

app.use('/', chatCat.router);



app.listen(app.get('port'), () => {
    console.log('running on port:', app.get('port'));
});

错误

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

我尝试了路由,但它一直在我的 express.js 中给我错误。

【问题讨论】:

  • 您正在插入路由器,但您需要插入路由功能,例如(a,b) => {...}

标签: node.js routes


【解决方案1】:

试试这个代码:

var express = require('express');
var app = express();


 app.set('port', process.env.PORT || 3000);
 app.use(express.static('public'));
 app.set('view engine', 'ejs');

var chatCat = require('./app');
app.use('/',chatCat);

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

【讨论】:

  • 还是同样的错误,我想知道是不是因为我安装了旧版本的express.js
【解决方案2】:

尝试使用此https://expressjs.com/en/starter/generator.html 创建应用程序,它将为您的项目创建良好的结构。至于你的错误 - 它需要表达middleware function。你不能从你的 app.js 导入路由器,因为它没有这样的属性。如果您想在此处描述路线,请使用:

    app.method('/yourRoute', function(req, res, next){
       //your middleware code
    });

也改变这个:

   app.listen(app.get('port'), () => {
     console.log('running on port:', app.get('port'));
   });

到这里:

 app.listen(3000);

您可以将 3000 更改为您想要的任何未使用的端口

【讨论】:

  • 我没有从 app.js 导入我的路由器,而是从文件夹调用应用程序中导入它,该文件夹调用应用程序中有一个文件“index.js”,其中包含此代码“module.exports = { router: require ('./routes')()"
  • @isaacmathias this const chatCat = require ('./app'); 获取您在 app.js 文件中导出的内容,该文件与您粘贴代码的文件位于同一目录中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 2017-06-14
  • 2019-09-02
  • 2015-01-03
  • 2016-05-09
  • 2015-01-30
  • 1970-01-01
相关资源
最近更新 更多