ошибка при настройке основы маршрутизатора TypeError(‘Router.use () требует функции промежуточного программного обеспечения, но получил ‘ gettype (fn))

#node.js #express #express-router

#node.js #экспресс #экспресс-маршрутизатор

Вопрос:

server.js

 const express = require('express');
const connectDB = require('./config/db');

const app = express();

//connect database
connectDB();

app.get(`/`, (req, res) => res.send('API Running'));

// Define Routes
app.use('/api/users', require('./routes/api/users'));
app.use('/api/posts', require('./routes/api/posts'));
app.use('/api/profile', require('./routes/api/profile'));
app.use('/api/auth', require('./routes/api/auth'));

const PORT = process.env.PORT || 5000;
app.listen(PORT, () => console.log(`server started on port ${PORT}`));
  

users.js профили и сообщения file …. auth практически одинаковы, а пользователи заменены соответствующими ключевыми словами

 const express = require('express');
const router = express.Router();
// @route   GET api/users
// @desc    Test route
// @access  Public
router.get('/', (req, res) => res.send('users route'));

module.exports = router;
  

я получаю сообщение об ошибке

 [nodemon] starting `node server.js`
F:ProjectWorkspaceStarter projectnode_modulesexpresslibrouterindex.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 (F:ProjectWorkspaceStarter projectnode_modulesexpresslibrouterindex.js:458:13)
    at Function.<anonymous> (F:ProjectWorkspaceStarter projectnode_modulesexpresslibapplication.js:220:21)
    at Array.forEach (<anonymous>)
    at Function.use (F:ProjectWorkspaceStarter projectnode_modulesexpresslibapplication.js:217:7)
    at Object.<anonymous> (F:ProjectWorkspaceStarter projectserver.js:14:5)
    at Module._compile (internal/modules/cjs/loader.js:1076:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:941:32)
    at Function.Module._load (internal/modules/cjs/loader.js:782:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting...
  

Я очень новичок в node и express, пожалуйста, объясните или дайте ссылку на документы, которые объясняют из basic ^ _ ^
вот profile.js файл

 const express = require('express');
const router = express.Router();
// @route   GET api/profile
// @desc    Test route
// @access  Public
router.get('/', (req, res) => res.send('profile route'));

module.exports = router;
  

Комментарии:

1. Ошибка выдается в строке 14, где вы это делаете app.use('/api/profile', require('./routes/api/profile')); , не могли бы вы показать нам код для profile.js ?

Ответ №1:

Оказывается, это была проблема с моими расширениями vscode, пришлось отключить фрагменты eslint и react и вуаля, он работает