Опубликовать запросы с помощью Axios - неожиданный токен u в JSON в позиции 0 - PullRequest
0 голосов
/ 22 декабря 2019

Кажется, это не редкая ошибка, и я перепробовал все stackoverflow и google, но не могу понять. Я работаю с функциями gatsby & netlify. В Почтальоне все работает нормально, ответ, который я получаю, верен.

На интерфейсе я получаю разные ошибки, в основном:

Ошибка при вызове: SyntaxError: Неожиданный токен u в JSONв позиции 0

или

SyntaxError: неожиданный токен F в JSON в позиции 0

и часто с ними:

mypage.js: 5 POST http://localhost:8000/.netlify/functions/hello 500 (внутренняя ошибка сервера)

Функция Netlify:

exports.handler = async (event, context) => {
  const params = JSON.parse(event.body);
  const name = params.name || 'World';

  return {
    statusCode: 200,
    headers: {"Content-Type": "application/json"},
    body: JSON.stringify({ message: name })
  };
};

Axios POST в Gatsby

import React, { useEffect } from 'react';
import Layout from '@layouts/layout';
import axios from 'axios';

const helloWorld = async () => {
    const response = await fetch(`/.netlify/functions/hello`, {
        method: `POST`,
        body: JSON.stringify({
          name : "Bob"
        })
      });

    const result = await response.json();
    console.log(response);
};

const MyPage = () => {
  useEffect(() => {
    helloWorld();
  });

  return (
    <Layout>
      <h1>Theory</h1>
    </Layout>
  );
};

export default MyPage;

Я читаю, что ошибки, которые я получаю, в основном связаны с тем, что что-то должно быть JSON, но на самом деле это не так,Я попытался явно установить заголовок в моей функции netlify (headers: {"Content-Type": "application/json"},), но, похоже, это не имеет значения. POSTMAN получает все правильно, но мой интерфейс, кажется, не подыгрывает.

edit: Если я смотрю на заголовок ответа в инструментах разработчика, я вижу это:

Response

Мне интересно, почему он говорит text/html, так как я установил его на application/json на сервере? Может ли это быть с этим связано? - В Почтальоне я правильно получаю application/json.

...