Как исправить, что маршруты в node js не работают?

#node.js

#node.js

Вопрос:

Кто-нибудь может мне помочь, я новичок в node js, и я застрял с этой ошибкой, она возвращает 404, не найдено, когда я пытаюсь посетить http://localhost:5000/api/items на моем почтальоне..

это файл items.js

const express = требовать(‘express’); const router = экспресс.Маршрутизатор ();

 //Items Model
const Item = require('../../models/Item');


router.get('/', (req, res) => {
Item.find()
.sort({date: -1})
.then(items => res.json(items))

});

router.post('/', (req, res) => {
    const newItem = new Item({
        name: req.body.name

    });
        newItem.save().then(item => res.json(item));
    
    });


module.exports = router;
  

это server.js файл

 const express = require('express');
const mongoose = require('mongoose');
const app = express();
app.use(express.json());

const items = require('./routes/api/items');

const db = require('./config/keys').mongoURI;
mongoose.connect(db, {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true })
.then(() => console.log('connected to mongo'))
.catch(err => console.log(err));

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

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

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

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

1. Показать весь js-файл с маршрутами

2. Правильно сказал @Anatoly. Всегда лучше делиться своим фрагментом кода, а не изображением, чтобы другим было легко понять и предложить вам оптимальное решение.

3. Пожалуйста, покажите server.js файл также для справки

4. Проверьте мой ответ, вам просто нужно изменить свой router.get (‘URL’), чтобы работать, и убедитесь, что вы ввели то же самое в postman

5. @JatinMehrotra Я уже меняю свой postman на localhost: 5000 / но получаю тот же ответ, сэр..

Ответ №1:

добавьте ‘/’ перед именем пути в server.js

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

тогда localhost: 5000 /api /items должен работать

Ответ №2:

Вам необходимо внести следующие изменения в свой server.js

  1. импортируйте свой модуль маршрутизатора

      const express = require('express');
    
     const mongoose = require('mongoose');
    
     const router = require('path of the router module');
    
     const app = express();
    
     app.use(express.json());
    
     app.use(router); //to use your router
    
    
     const items = require('./routes/api/items');
    
     const db = require('./config/keys').mongoURI;
     mongoose.connect(db, {useUnifiedTopology: true, useNewUrlParser: true, useCreateIndex: true })
     .then(() => console.log('connected to mongo'))
     .catch(err => console.log(err));
    
     app.use('/api/items', items);
    
     const port = process.env.PORT || 5000;
    
     app.listen(port, () => console.log(`port started ${port}`));
      

Попробуйте это:-

Как я вижу на изображении «vscode»

вы использовали router.get("/")

тогда как в postman вы используете URL для запроса GET как localhost:5000/api/items .

Либо измените свой внутренний код на router.get("/api/items") , либо исправьте запрос postman на localhost:5000/

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

1. я уже меняю его на localhost: 5000 / но получаю ту же ошибку

2. привет, сэр, спасибо за ваш ответ, я уже отредактировал его выше