Пишу небольшое приложение в реакт. Добавил метод fetch в функциональный компонент.
fetch('src/data/data-socials.json')
.then(res => {
if(!res.ok){
throw new Error("HTTP error " + res.status);
}
return res.json()
}).then(data => console.log(data)).catch(err => console.log(err));
файл data-socials.json
{
"instagramLink" :{
"classOfSocial": "social instagram",
"href" :"https://www.instagram.com",
"classFaFa" :"fa fa-instagram fa-2x"
},
"vkLink" :{
"classOfSocial": "social vk",
"href" :"https://www.instagram.com",
"classFaFa" :"fa fa-vk fa-2x"
},
"linledOnLinl" :{
"classOfSocial": "social linkedin",
"href" :"https://www.linkedin.com/in",
"classFaFa" :"fa fa-linkedin fa-2x"
}
}
**``` Ожидаю 3 обЪекта, а получаю ошибку JSON.parse:**
Локальный файл нельзя получить через fetch.
Если речь идёт о получении серверного файла с сайта, то следует его поместить в какое-то место, где раздающий сервер (а через него и клиент) сможет до него добраться. И вряд ли это будет папка с исходниками. К тому же, ты используешь относительный путь, который (в текущем виде) предполагает, что страница находится рядом с папкой src.
Если же речь идёт о node.js и доступе к файлу на самом сервере, то с json'ом отлично работает обычный require:
var data = require('./src/data/data-socials.json')
впрочем, он однократно загрузит файл и будет в последующем отдавать именноэту версию.
Если требуется считывать актуальную версию файла, стоит читать его самому при помощи fs.readFile, по необходимости удалять BOM, а затем отдавать строку в JSON.parse.
Сборка персонального компьютера от Artline: умный выбор для современных пользователей