#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
-
импортируйте свой модуль маршрутизатора
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. привет, сэр, спасибо за ваш ответ, я уже отредактировал его выше