![](/img/trans.png)
[英]Why nodejs returns 404 even after processing the request for the route?
[英]NodeJs Route returns 404 in production but not in local
我正在开发我的第一个 NodeJS 应用程序。 我已经在本地环境中尝试过我的应用程序,它运行良好。 所以我决定将它部署在我的共享主机上。
我的路由器有问题,它在生产环境中返回 404,但在本地没有。
我调用的路线:GET /match/getAllMatches
这是我的 app.js 文件:
const createError = require('http-errors');
const express = require('express');
const path = require('path');
const cookieParser = require('cookie-parser');
const logger = require('morgan');
const sequelize = require('./config/database');
const bodyParser = require('body-parser');
const indexRouter = require('./routes/index');
const usersRouter = require('./routes/users');
const matchRouter = require('./routes/match.js');
const app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/match', matchRouter);
app.use('/api/auth', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
sequelize
.authenticate()
.then(() => {
console.log('Connection has been established successfully.'); // eslint-disable-line no-console
})
.catch((err) => {
console.error('Unable to connect to the database:', err); // eslint-disable-line no-console
});
app.use((req, res, next) => {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content, Accept, Content-Type, Authorization');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
next();
});
app.use(bodyParser.json());
module.exports = app;
这是我的 match.js 路由器文件:
const express = require('express');
const router = express.Router();
const controller = require('../controllers/match');
const auth = require('../middleware/auth');
router.get('/getAllMatches', controller.getAllMatches);
module.exports = router;
这是我的小控制器文件:
const Event = require('../models/Event')
exports.createMatch = (req, res, next) => {
delete req.body.id;
const Event = new Event(...req.body);
Event.save()
.then(() => res.status(200).json({
message:'Match créé avec succès'
}))
.catch((error) => res.status(400).json({ error : error }));
};
exports.getAllMatches = (req, res, next) => {
Event.findAll()
.then((events) => {
res.status(200).json(events);
})
.catch((error) => {
res.status(400).json({ error : error });
})
};
你看我的代码有什么问题吗?
如果您将app.use("/")放在所有路线之前,那么任何其他路线如何工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.