Ошибка синтаксического анализа React-Native JSON: неожиданный идентификатор «var»

#json #react-native

#json #react-native

Вопрос:

Я пытаюсь создать экран входа в систему для моего приложения react-native, но при попытке входа в систему я получаю сообщение об ошибке «Ошибка синтаксического анализа JSON: неожиданный токен «var»». отображается.

У меня есть приложение react native и серверное приложение в другой папке, доступ к которым я получаю через localhost.

Я попытался изменить var на let, чтобы посмотреть, что произойдет, но тогда я бы получил ту же ошибку, но вместо let .

Это мой собственный код react

     login = () => {
        fetch('http://192.168.0.105:8888/loginbackend/routes/users.js', {
            method: 'POST',
            header: {
                'Content-Type': 'application/json',
                'Accept': 'application/json',
            },
            body: JSON.stringify({
                username: this.state.username,
                password: this.state.password,
            })
        })

            .then((response) => response.json())
            .then ((res) => {

                if (res.success === true) {
                    AsyncStorage.setItem('user', res.user);
                    this.props.navigation.navigate('Profile');
                }
                else {
                    alert(res.message);
                }
            })
            .done();
    }
}
  

Мой серверный файл

 var express = require('express');
var router = express.Router();
var mysql = require('mysql');

var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'root',
  database: 'users'
});

router.POST('/', function(req, res) {

  var username = req.body.username;
  var password = req.body.password;

  connection.query(
    "SELECT * FROM user WHERE username = ? AND password = ?",
    [username, password], function (err, row){

      if (err) {
        console.log(err);
        res.send({ 'success': false, 'message': 'Kan niet met de database verbinden'});
      }

      if (row.length > 0 ){
        res.send({ 'success': true, 'user': row[0].username });
      } else {
        res.send({ 'success': false, 'message': 'Gebruiker niet gevonden'});
      }
    });
});

module.exports = router;

  

Раньше я получал ошибку синтаксического анализа JSON: неожиданный токен ‘<‘, но теперь ошибка синтаксического анализа JSON: неожиданный идентификатор «var». Я не могу войти в систему и не могу получить предупреждение, если учетные данные неверны.

Ответ №1:

Экспресс не был настроен правильно, и в моем файле приложения я изменил ‘header’ на ‘headers’.

файл приложения

 login = () => {
        fetch('http://localhost:8080/users/', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Accept': 'application/json',
            },
            body: JSON.stringify({
                "username": this.state.username,
                "password": this.state.password,
            })
        })

            .then((response) => response.json())
            .then ((res) => {

                if (res.success === true) {
                    AsyncStorage.setItem('user', res.user);
                    this.props.navigation.navigate('Profile');
                }
                else {
                    alert(res.message);
                }
            })
            .done();
    }
}
  

экспресс-файл App.js

 const port = 8080;

var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var bodyParser = require('body-parser');
var mysql = require('mysql');

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');

var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

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('/users', 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');
});

app.listen(port, () => console.log(`Backend now listening on ${port}!`));

module.exports = app;
  

выразить users.js

 var express = require('express');
var router = express.Router();
var mysql = require('mysql');

var connection = mysql.createConnection({
  host: '127.0.0.1',
  user: 'root',
  password: 'root',
  database: 'users',
  port: 8889
});

router.post('/', function(req, res) {

  var username = req.body.username;
  var password = req.body.password;


  connection.query(
    "SELECT * FROM user WHERE username = ? AND password = ?",
    [username, password], function (err, row){

      if (err) {
        console.log(err);
        res.send({ 'success': false, 'message': 'Kan niet met de database verbinden'});
      }

      if (row.length > 0 ){
        res.send({ 'success': true, 'user': row[0].username });
      } else {
        res.send({ 'success': false, 'message': 'Gebruiker niet gevonden'});
      }
    });
});

module.exports = router;
  

Надеюсь, это поможет людям, которые застряли на одном и том же.