поэтому я делаю приложение Ionic, и у меня есть сервер узла, который подключен к базе данных мангуста, однако мой сервер узла продолжает возвращать ошибку 404. Следующее из моего терминала Node:
GET / 404 2.975 ms - 139
GET /favicon.ico 404 0.427 ms - 150
GET /api/courses 404 1.415 ms - 150
GET /api/courses 404 0.196 ms - 150
OPTIONS /api/courses 204 3.840 ms - 0
POST /api/courses 404 40.388 ms - 151
GET /api/courses 404 0.247 ms - 150
GET /api/courses 404 0.201 ms - 150
GET /api/courses 404 0.271 ms - 150
GET /api/courses 404 0.188 ms - 150
GET /api/courses 404 0.184 ms - 150
GET /api/courses 404 0.154 ms - 150
GET / 404 0.190 ms - 139
GET / 404 0.198 ms - 139
GET /api/courses 404 2.366 ms - 150
GET /api/courses 404 0.195 ms - 150
GET /api/courses 404 0.195 ms - 150
GET /api/courses 404 0.410 ms - 150
GET /api/courses 404 0.204 ms - 150
OPTIONS /api/courses 204 0.727 ms - 0
POST /api/courses 404 3.987 ms - 151
GET / 404 0.168 ms - 139
GET /api/courses 404 0.209 ms - 150
А это скриншот из консоли в приложении
Я не уверен, почему это происходит, это мой серверный файл: server.js:
var express = require('express');
var app = express();
var mongoose = require('mongoose');
var morgan = require('morgan');
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var cors = require('cors');
mongoose.connect('mongodb://127.0.0.1:27017/courses');
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({'extended': 'true'}));
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));
app.use(methodOverride());
app.use(cors());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header('Access-Control-Allow-Methods', 'DELETE, PUT');
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
var Course = mongoose.model('Course', {
coursecode: String,
email: String,
name: String
})
//Routes
app.get('api/courses', function(req, res){
console.info("Fetching Courses")
Course.find(function(err, courses){
if (err)
res.send(err)
res.json(courses);
});
});
app.post('api/courses', function(req, res){
console.info("Creating Entry in course");
Course.create({
title: req.body.title,
email: req.body.email,
name: req.body.name,
done: false
}, function(err, courses){
if (err)
res.send(err);
Course.find(function(err, courses){
if (err)
res.send(err)
res.json(courses);
});
});
});
app.delete('api/courses/:course_id', function(req, res){
Course.remove({
_id: req.params.course_id}, function(err, course){
});
});
app.listen(8080);
console.info("Listening on port 8080")
Когда я запускаю node server.js, я вижу в терминале «Прослушивание порта 8080», поэтому я знаю, что все работает нормально. Однако когда я перехожу на http: // локальный: 8080, я получаю сообщение об ошибке CANNOT GET /.
Цените всю помощь!





Вы должны определить корневой (/) маршрут. Это не дает вам это бесплатно. Попробуйте создать один:
app.get('/', function(req, res){
console.info("Root Route")
res.json({ message: "hello world" });
});
замените app.get('api/courses', на app.get('/api/courses',.
Вам нужно добавить косую черту (/) в маршрут приложения.
Подробнее о маршрутах см. Здесь: https://expressjs.com/en/guide/routing.html
Вы не определили корневой маршрут ... вы пробовали перейти на
/api/courses?