Кажется, это не редкая ошибка, и я перепробовал все 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: Если я смотрю на заголовок ответа в инструментах разработчика, я вижу это:
Мне интересно, почему он говорит text/html
, так как я установил его на application/json
на сервере? Может ли это быть с этим связано? - В Почтальоне я правильно получаю application/json
.