Я знаю, что это моя глупая ошибка, но я чешу в затылке, пытаясь понять, в чем я ошибаюсь. Я писал приложения стека MERN раньше и не сталкивался с этим: мои данные JSON возвращаются в двойных кавычках.
На стороне сервера я читаю файл (с fs.readFile) в таком формате
{"projects":[
{
"project1": {
"title": "something",
"date": "sometime",
"text": "some stuff",
"img": "some url"
}
}
]}
и обслуживая его таким образом
router.get('/projects', function (req, res) {
logic.getProjects()
.then(projects => res.json(projects))
.catch(err => console.error(err))
На стороне клиента я его получаю
getProjects() {
return fetch('/api/projects',{ headers:{'Content-Type': 'application/json'}})
.then(res => res.json())
.catch(err => console.info(err))
}
но мое приложение React получает
" {"projects":[
{
"project1": {
"title": "something",
"date": "sometime",
"text": "some stuff",
"img": "some url"
}
}
]} "
То есть он заключен в двойные кавычки, хотя - насколько я понимаю - он уже был проанализирован. Если бы кто-нибудь мог указать мне на мою (безусловно очевидную для всех, кроме меня) ошибку, я был бы признателен!
Вы должны вернуть что-то пользователю в блоке catch, иначе браузер дождется таймаута: res.status(500).send('Something broke!') см. Здесь: expressjs.com/en/guide/error-handling.html



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


readFile возвращает строку. вам нужно будет отправить его на JSON.parse(readFile).
Ваш маршрут должен быть примерно таким, как
router.get('/projects', function (req, res) {
logic.getProjects()
.then(projects => JSON.parse(projects))
.then(jsonProjects => res.json(jsonProjects))
.catch(err => console.error(err))
вам нужно проанализировать ответ через JSON.parse ()