В моем проекте ReactJS я в настоящее время запускаю сервер с NodeJS и ExpressJS и подключаюсь к MongoDB с помощью MongoClient. У меня есть конечная точка API входа в систему, которая принимает запрос со статусом (500): {имя пользователя: «iopsert», пароль: «vser») и // login endpoint app.post ('/ api / login /', function (req, res) {console.log ('Req body in login', req.body) console.log («ЭТО ЧТО ПРОИСХОДИЛО В +++++», req._id) db.collection («пользователи») findOne ( {username: req.body.username}, function (err, user) {console.log («Пользователь найден») if (err) {console.log («ЭТО ОШИБКА ОТВЕТ») // Хочет отправить этот json как ответ об ошибке на front-end res.status (500) .send ({ошибка: «Это ответ об ошибке», успех: false,})} if (user.password === req.body.password) { console.log («Имя пользователя и пароль верны») res.status (500) .send ({имя пользователя: req.body.username, success: true, user: user,})} else {res.status (500). send ({error: «Credentials are wrong», success: false,})}}). И если пользователь не найден, следует поймать ошибку и ответить с ошибкой (Req body in login { username: 'iopsert', password: 'vset' } THIS IS WHAT WAS PASSED IN+++++ undefined User found /Users/John/practice-project/node_modules/mongodb/lib/utils.js:98 process.nextTick(function() { throw err; }); ^ TypeError: Cannot read property 'password' of null at /Users/John/practice-project/server/server.js:58:12 at handleCallback (/Users/John/practice-project/node_modules/mongodb/lib/utils.js:96:12) at /Users/John/practice-project/node_modules/mongodb/lib/collection.js:1395:5 at handleCallback (/Users/John/practice-project/node_modules/mongodb/lib/utils.js:96:12) at /Users/John/practice-project/node_modules/mongodb/lib/cursor.js:675:5 at handleCallback (/Users/John/practice-project/node_modules/mongodb-core/lib/cursor.js:165:5) at setCursorNotified (/Users/John/practice-project/node_modules/mongodb-core/lib/cursor.js:505:3) at /Users/John/practice-project/node_modules/mongodb-core/lib/cursor.js:578:16 at queryCallback (/Users/John/practice-project/node_modules/mongodb-core/lib/cursor.js:226:18) at /Users/John/practice-project/node_modules/mongodb-core/lib/connection/pool.js:430:18
) к интерфейсу.
Но вместо того, чтобы реагировать на внешний интерфейс с ошибкой json, сервер разбивается. Я пробовал все, чтобы понять, почему, но до сих пор не повезло.
Как я могу исправить следующую ошибку? Любые указания или проницательность будут оценены с большой благодарностью и будут отвечать и принимать ответ.
Я намеренно сделал запрос с именем пользователя и паролем ( /Users/John/practice-project/node_modules/mongodb/lib/utils.js:98
), который не существует в базе данных.
Вот конечная точка входа:
var handleCallback = function(callback, err, value1, value2) {
try {
if(callback == null) return;
if(value2) return callback(err, value1, value2);
return callback(err, value1);
} catch(err) {
process.nextTick(function() { throw err; });
return false;
}
return true;
}
И вот журнал ошибок терминала:
"use strict"
var express = require('express');
var path = require('path');
var config = require('../webpack.config.js');
var webpack = require('webpack');
var webpackDevMiddleware = require('webpack-dev-middleware');
var webpackHotMiddleware = require('webpack-hot-middleware');
var bodyParser = require('body-parser');
var MongoClient = require('mongodb').MongoClient;
var ObjectId = require('mongodb').ObjectID;
const jwt = require('jsonwebtoken')
var app = express();
var db;
var compiler = webpack(config);
app.use(webpackDevMiddleware(compiler, {noInfo: true, publicPath: config.output.publicPath}));
app.use(webpackHotMiddleware(compiler));
app.use(express.static('dist'));
app.use(bodyParser.json());
И loginUser(creds) { var request = { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify(creds), } fetch(`http://localhost:3000/api/login`, request) .then(res => res.json()) .then(user => { console.log(user); console.log('Successful') }) .catch(err => { console.log('Error is', err) }) },
имеет в виду следующее:
user
РЕДАКТИРОВАТЬ
Здесь все, что импортируется на сервер:
if(user.password === req.body.password) {...}
И вот как делается запрос, и ошибка поймана:
1. Req body in login { username: 'iopsert', password: 'vset' }
2. THIS IS WHAT WAS PASSED IN+++++ undefined
3. User found
4. /Users/John/practice-project/node_modules/mongodb/lib/utils.js:98
5. process.nextTick(function() { throw err; });
^
6. TypeError: Cannot read property 'password' of null
7. at /Users/John/practice-project/server/server.js:58:12