Как решить проблему «Router.use () требует наличия функции промежуточного программного обеспечения, но получил ошибку Object at Function.use» - PullRequest
0 голосов
/ 25 ноября 2018

Я получаю сообщение об ошибке при вызове моего маршрутизатора из моего каталога маршрутов. Я внес некоторые изменения в свой код в отношении некоторых других сообщений по этой проблеме, но не могу ничего решить. Однако я не уверен, чтоточно не так с моим кодом ниже.

Это моя ошибка

[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
E:\Program Files\mean apps\shoppinglist\crud-backend\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 Object
    at Function.use (E:\Program Files\mean apps\shoppinglist\crud-backend\node_modules\express\lib\router\index.js:458:13)
    at Function.<anonymous> (E:\Program Files\mean apps\shoppinglist\crud-backend\node_modules\express\lib\application.js:220:21)
    at Array.forEach (<anonymous>)
    at Function.use (E:\Program Files\mean apps\shoppinglist\crud-backend\node_modules\express\lib\application.js:217:7)
    at Object.<anonymous> (E:\Program Files\mean apps\shoppinglist\crud-backend\app.js:42:5)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:279:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:752:3)
[nodemon] app crashed - waiting for file changes before starting...

У меня есть этот код в моем app.js

//importing  modules
var express = require('express');

var mongoose = require('mongoose');
var bodyparser = require('body-parser');
var cors = require('cors');
var path = require('path');

var app = express();

const route = require('./routes/route');

//conect to the mongodb
mongoose.connect('mongodb://localhost:27017/shoppinglist');

//on connection
mongoose.connection.on('connected',()=>{
    console.log('Connected to database mongodb @ 27017');
});

//error
mongoose.connection.on('error',(err)=>{
    if(err)
    {
        console.log('Error in database connection:'+ err);
    }  
});

//port no
const port = 3000;

//adding middleware - cors
app.use(cors());

//body - parser
app.use(bodyparser.json());

//static files
app.use(express.static(path.join(__dirname, 'public')));

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

//testing server
app.get('/',(req, res)=>{
    res.send('foobar');
});

app.listen(port,()=>{
    console.log('Server started at port:' + port);
});

У меня есть этот код вмой route.js

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

const Item = require('../model/shoppingItem');

//retriving data from db
router.get('/items', (req, res, next)=>{
    Item.find(function(err, items){
        if(err){
            res.json(err);
        }
        else{
            res.json(items);
        }
    });
});

//insert data 
router.post('item', (req, res, next)=>{
    let newShoppingItem = new Item({
        itemName: req.body.itemName,
        itemQuantity: req.body.itemQuantity,
        itemBought: req.body.itemBought
    });
    newShoppingItem.save((err, item)=>{
        if(err){
            res.json(err);
        }
        else{
            res.json({msg: 'Item has been added successfully'});
        }
    });
});

1 Ответ

0 голосов
/ 25 ноября 2018

Вы используете модуль, который вы никогда не экспортировали.

app.use('/api', route);

, но route никогда не экспортировался - это ваша главная проблема.

в вашем *В модуле 1009 * вы можете обернуть все в export default - в качестве альтернативы вы можете использовать module.exports = router

Это проект с открытым исходным кодом, над которым я работал, попробуйте следовать структуре, если у вас все еще есть проблемы, дайте мне знать.

https://github.com/Muhand/nodejs-server

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...