Как обработать сообщение об ошибке React Native: ошибка синтаксического анализа JSON: нераспознанный токен '<' ..in tryCallOne ..in <unknown> - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь узнать, как подключить приложение React Native (в настоящее время также использующее expo) к серверу Spring Boot.

Я видел похожие вопросы об этом сообщении об ошибке в Интернете с ответом, что это проблема, вызванная ошибкой в ​​URL. Это тот случай? Другой ответ, который я увидел, заключался в том, что «нераспознанный токен» <»означал, что ответ возвращался в формате html, а не в JSON, однако при тестировании запроса GET к моему API в Postman я получил JSON: [{" id ": 1, "organizer": "OrganizerTest1", "location": "LocationTest1"}, ...] </p>

Для моего приложения « exp: //172.20.10.6: 19000 » - это порт приложения (по крайней мере, я так думаю).

Но я получаю ошибку синтаксического анализа JSON.

"Ошибка разбора JSON: нераспознанный токен '<' - node_modules / обещание / setimmediate / core.js: 37: 14 в tryCallOne - node_modules / обещание / setimmediate / core.js: 123: 25 в - ... еще 8 стековых фреймов из внутренних компонентов фреймворка "</p>

class GamesCollection  extends Component {

  constructor(props){
    super(props);

    this.state = {
      loading: true,
      error: false,
      games: [],
    }
  }


  componentDidMount = async () => {
  try {
    let response = await fetch('http://172.20.10.6:19000/games',{
            headers:{
                Accept:'application/json',
                'Content-Type':'application/json',
            }
        })
    let games = await response.json()
    this.setState({loading: false, games})
  } catch (e) {
    console.log(e);
    this.setState({loading: false, error: true})
  }
}


server in Java  Spring Boot:

@RestController
@RequestMapping("/")


public class GameController {
    private final GameRepository repository;

    GameController(GameRepository repository) {
        this.repository = repository;
    }

    //Aggregate root

    @GetMapping("/games")
    @CrossOrigin(origins = "")

    public List<Game> all() {
                return repository.findAll();
    }

1 Ответ

0 голосов
/ 10 января 2019

Возможно, вам нужно указать JSON в качестве типа ответа. Например:

@GetMapping(value = "/games", produces = "application/json; charset=UTF-8")

Также убедитесь, что вы указали правильный адрес сервера. 172.20.10.6:19000 может быть неправильной комбинацией хоста и порта. Обычно весенняя загрузка по умолчанию запускает сервер на порту 8080.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...