api:Express:抛出新的TypeError('Router.use()需要中间件功能,但得到了'+ gettype(fn))

时间:2018-12-08 20:38:06

标签: javascript node.js express server

我刚刚开始使用express构建api,但遇到了错误。

err  下面是我的代码。请帮忙。

Server.js代码

const express = require('express');
const mongoose = require('mongoose')

const users = require('./routes/api/users');
const profile = require('./routes/api/profile');
const posts = require('./routes/api/posts');
const app = express();

//DB config

const db = require('./config/keys').mongoURI;

//connet to MongoDB

mongoose
    .connect(db)
    .then(() => console.log('MongoDB connected'))
    .catch(err => console.log(err));

app.get('/', (req, res) => res.send('Hello Ajas Bakran'));

//Use Routes

app.use('/api/users', users);
app.use('/api/profile', profile);
app.use('/api/posts', posts);

const port = process.env.PORT || 5000;

app.listen(port, () => console.log(`Server running on port ${port}`));

users.js代码

const express = require('express');
const router = express.Router();

router.get('/test', (req, res) => res.json({msg:'Hello Users'}));

module.exports = router;

profile.js代码

const express = require('express');
const router = express.Router();

router.get('/test', (req, res) => res.json({msg:'Hello profile'}));

module.exports = router;

posts.js

const express = require('express');
const router = express.Router();

router.get('/test', (req, res) => res.json({msg:'Hello posts'}));

module.exports = router;

我在stackoverflow上提到的答案很少,但是对此的不明智的解决方案是在末尾使用module.exports = router;这行。但是我确实已经显示了该行,但仍然收到相同的错误。真的不确定出什么问题

1 个答案:

答案 0 :(得分:0)

据我所知,我认为您需要重写这一部分:

router.route('/')

代替

router.get

通常,这些类型的错误源自未正确导出的路由器。