У меня есть очень простое приложение, с которым мы работаем уже более года, и с различными вариантами Linux и windows. Единственное отличие состоит в том, что я развернул окно на AWS, которое использует CentOS версии 7.7.1908 с Пн go 4.2.5 и Узел 12.16.0 . В настоящее время я использую точно такой же код на Windows 10 и CentOS 8. Я также запускаю его на Ubuntu. Никаких проблем.
В поле AWS я могу запустить Mon go (чтение и запись) и выполнить файл узла. Итак, я знаю, что службы работают.
НО, от Почтальона, когда я достиг конечной точки с целью записать JSON в БД. Сбой сразу, когда выполняется user_find. Я отследил это до этого кода ниже.
Обнаружено, где он не работает: я удалил весь свой код, просто хочу записать его на консоль, чтобы посмотреть, достигнет ли он этого места.
контроллер. пользователи. js
const User = require('../models/user');
const mongoose = require('mongoose');
const bcrypt = require('bcrypt');
console.log('Controller Read'); //This displays in the console when the app is launched. It also proves the routing is correct as well.
exports.user_find = (req, res, next) => {
console.log('User Find Activated'); //When I try to send data the app fails and never gets this message.
}
Я думал, что, возможно, версия моих модулей борется. Я понизил некоторые, но это не имело значения. Это то, что у меня сейчас есть.
"dependencies": {
"bcrypt": "^4.0.1",
"body-parser": "^1.19.0",
"dotenv": "^8.2.0",
"express": "^4.17.1",
"mongoose": "^5.9.7",
"morgan": "^1.10.0",
"nodemon": "^2.0.3"
}
** Вот код моего приложения.
const express = require('express');
const app = express();
const morgan = require('morgan');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
// Application Routes
const customerRoutes = require('./api/routes/customers');
const orderRoutes = require('./api/routes/orders');
const userRoutes = require('./api/routes/users');
mongoose.connect('mongodb://127.0.0.1:27017', { dbName: 'myDB', useNewUrlParser: true, useUnifiedTopology: true }).
then(() => console.log('db Connected')).
catch(err => console.log('Caught', err.stack));
//For Dev purposes
app.use(morgan('dev'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
//This piece of code deals with CORS errors
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, Authorization');
if (req.method === 'OPTIONS') {
res.header('Access-Control-Allow-Methods', 'PUT','POST','PATCH','DELETE');
return res.status(200).json({});
}
next();
});
//Routes to handle requests
app.use('/customers', customerRoutes);
app.use('/orders', orderRoutes);
app.use('/users', userRoutes);
app.use((req, res, next) => {
const error = new Error( 'App Crash' );
error.status = 404;
next(error);
});
app.use((error, req, res, next) => {
res.status(error.status || 500);
res.json({error: {message: error.message}
});
});
module.exports = app;
В mongod.conf я также закомментировал BindIP. Это открыто для всего. Когда приложение запускается, я подключаю БД, так что я знаю, что это работает.