Проблема в
mode: 'no-cors'
Из документации ...
Предотвращает использование метода чем-либо кроме HEAD, GET или POST, и заголовки, отличные от простых заголовков
Ограничение simple типа содержимого заголовка позволяет
text/plain
, application/x-www-form-urlencoded
и multipart/form-data
В результате ваш красиво обработанный заголовок Content-Type: application/json
станет content-type: text/plain
(по крайней мере, при тестировании через Chrome).
Поскольку ваш сервер Express ожидает JSON, он не будет анализировать этот запрос.
Я рекомендую пропустить конфигурацию mode
.Вместо этого здесь используется опция "cors"
по умолчанию.
Поскольку ваш запрос не простой , вы, вероятно, захотите добавить несколько CORSпромежуточное программное обеспечение для вашего сервера Express.
Другой (слегка взломанный) вариант - указать Express анализировать text/plain
запросы как JSON.Это позволяет отправлять строки JSON в виде простых запросов, что также позволяет избежать предварительного запроса OPTIONS
, что снижает общий сетевой трафик ...
app.use(express.json({
type: ['application/json', 'text/plain']
}))
РЕДАКТИРОВАТЬ: добавлена конечная скобка в app.use
окончательный кодовый блок.