#reactjs
#reactjs
Вопрос:
Я создал веб-приложение для блога, используя react Js, оно отлично работает в моей локальной системе, но после его размещения оно показывает код состояния 404. Я использовал поддельный пакет json-сервера для запуска в моей локальной системе, но после размещения его на github он не извлекает данные из файла json. Это веб-приложение https://manishya1669.github.io/BlogWebApp / и это код для Blogdetails, и для большей наглядности вы можете увидеть весь исходный код на https://github.com/manishya1669/BlogWebApp
import { useHistory, useParams } from "react-router-dom";
import useFetch from "./useFetch";
const BlogDetails = () => {
const {id} = useParams();
const {data:blog, error,isPending} = useFetch('http://localhost:8000/blogs/' id);
const history = useHistory();
const handleClick = () => {
fetch('http://localhost:8000/blogs/' blog.id, {
method: 'DELETE'
}).then(() => {
history.push('/');
})
}
return (
<div className= "blog-details">
{isPending amp;amp; <div> Loading</div> }
{error amp;amp; <div>{error}</div>}
{ blog amp;amp;(
<article>
<h2>
{blog.title}
</h2>
<p> Written by {blog.author}</p>
<div>{blog.body}</div>
<button onClick={handleClick}>Delete</button>
</article>
)
}
</div> );
}
export default BlogDetails;
**Hope this is enough to make my self clear and appreciating those who are willing to help**
Комментарии:
1. Опубликуйте ошибки на своей консоли в этой теме.
2. Ваша сборка завершилась неудачно, сославшись на отсутствие
/docs
папки в вашей ветке gh-pages.3. какую версию react вы используете в этом приложении react?
Ответ №1:
Я нашел его решение, оно не выполнялось Cors policy
, потому что я запускал всю свою клиентскую часть на порту № 3000 и пытался получить данные с порта 8000, поэтому из-за двух разных портов рассматривалось два разных веб-сайта, где один пытается получить данные с другого, и этот веб-сайт не был безопасным. Итак, чтобы справиться с этим, вам нужно добавить proxy
сервер в свой package.json
, например
"name": "webapp",
"version": "0.1.0",
"private": true,
"proxy": "http://localhost:8000",
Также необходимо заменить fetch('http://localhost:8000/blogs/' blog.id,
с fetch('/blogs/' blog.id,
const handleClick = () => {
fetch(/'blogs'/ blog.id, {
method: 'DELETE'
}).then(() => {
history.push('/');
})
}
Если вы обнаружите какую-либо ошибку, пожалуйста, дайте мне знать, это поможет мне узнать больше.