Невозможно получить только изображение из локального JSON в React

У меня проблема, когда я пытаюсь получить изображения из файла .json в реакции, путь в порядке, также все остальные данные отображаются без проблем, изображение занимает место, и ссылку можно увидеть при проверке, но само изображение не отображается. Я пробовал буквально все, что мог, изображения, импортированные классическим способом, работают нормально (прямой импорт не из файла .json).

Мой код:

// import demo from "../../assets/icons/demo.jpg";
// import metalPan from "../../assets/icons/metalPan.jpg";
// import Foodie from "../../assets/icons/Foodie.jpg";
import "./Projects.scss";
import ProjectData from "../../json/projects.json";

function Projects() {
  return (
    <>
      <h2 className = "section_name">Projects</h2>
      <div className = "projects">
        {/* Project card */}

        {ProjectData?.map((info) => {
          return (
            <>
              <div key = {info?.id} className = "project_wrraper">
                <div className = "project">
                  <h3 className = "project_name">{info.name}</h3>
                  <div className = "project_tech">
                    {info.stack.map((data) => {
                      return (
                        <div>
                          <span>{data.language}</span>
                        </div>
                      );
                    })}
                  </div>
                  <p className = "project_descr">{info.description}</p>
                  <div className = "project_stack">
                    <button className = "stack-btn">Live version</button>
                    <button className = "stack-btn">GitHub</button>
                  </div>
                </div>
                <img
                  className = "project_img"
                  src = {`${info.image}`}
                  alt = ""
                />
              </div>
            </>
          );
        })}
        {/* end of  project card */}
      </div>
    </>
  );
}

export default Projects;

[
  {
    "id": 1,
    "name": "Metal Pan",
    "stack": [
      {"language": "JavaScript"},
      {"language": "Sass"},
      {"language": "BootStrap"},
      {"language": "PHP"}
    ],
    "image": "../assets/icons/metalPan.jpg",
    "description": "Web Site made for company specialized in manufacturing and setting up industrial halls and metal roofs."
  },
  {
    "id": 2,
    "name": "Foodie",
    "stack": [
        {"language": "JavaScript"},
        {"language": "Sass"},
        {"language": "HTML5"}
      ],
    "image": "../assets/icons/Foodie.jpg",
    "description": "Personal project of responsive restaurant design with gallery, blog and menu!"
  },
  {
    "id": 3,
    "name": "eShop",
    "stack": [
        {"language": "React"},
        {"language": "CSS"},
        {"language": "HTML5"}
      ],
    "image": "../assets/icons/eShop.jpg",
    "description": "Personal project of eShop store using fake api, fetch all data, single product data and filter function."
  }
]

Я пытался использовать много решений, но не повезло, некоторые из них я приведу здесь (просто назвать несколько):

Реагируйте, загружайте изображения локально из json

https://www.appsloveworld.com/reactjs/100/33/get-local-image-path-from-json-in-react

🤔 А знаете ли вы, что...
JavaScript имеет множество встроенных объектов, таких как Array, Date и Math.


77
3

Ответы:

Находятся ли изображения в общей папке? Проблема очень очевидна в том, что src изображения является относительным путем, но реакция попытается найти их в вашей общей папке. Если вы замените значение изображений с "image": "../assets/icons/Foodie.jpg" на "image": "/assets/icons/Foodie.jpg", я думаю, это должно сработать.


Решено

Вы можете решить эту проблему, следуя этому подходу:

  1. Создайте папку с любым именем (рекомендуемое имя — ресурсы или изображения) в общем каталоге.
  2. Таким образом, путь к изображению будет folderName/image.jpg.

Таким образом, каким бы ни был абсолютный путь, он не указывает на общую папку.

Также, если изображения находятся в папке src, вы не можете добавить их в тег src. Просто импортируйте его, и именно поэтому импорт работает, а путь .json - нет.


Ознакомьтесь с этим решением SO, возможно, вам потребуется включить require('../assets/...'); в функцию карты.

так это выглядит примерно так.

<img className = "project_img" src = {require(${info.image})} alt = ""/>