Ошибка: не удается разрешить './images/sample.png' React Webpack

Пытался создать приложение MERN с помощью Webpack и не мог загружать изображения в React.

Метод рендеринга компонента React:

const logo = require('./images/sample.png');

<img src = {logo}'/>

Webpack

module: {
loaders: [
  { test: /\.js$/, exclude: /node_modules/, loaders: ['babel-loader'] },
  { test: /\.css$/, use: ['style-loader','css-loader']},
  {test: /\.(jpg|png|svg)$/, loader: 'url-loader'}
]  }

выводит bundle.js в папку src, файловая структура ниже

Файловая структура

приложение

| ...... src

......... | компоненты

.................... | component.js

......... | изображения

.................... | sample.png

Неважно, как я изменяю путь в require, и даже если я помещаю изображение sample.png в ту же папку, что и component.js, я получаю сообщение об ошибке, которое не может быть разрешено. Я думаю, что это ошибка веб-пакета, но сколько бы руководств и форумов я ни читал, я не могу ее исправить.

В идеале я бы загружал изображения динамически, а не объявлял такие конкретные требования, поэтому, если есть лучший способ, скажите мне.

Обновлено:

Я изменил src = {logo} на src = {require("${logo}")} и больше не получаю ошибку на стороне сервера. Вместо этого я получаю сообщение об ошибке в консоли разработчика (используя Chrome), которая, похоже, возвращает img URI (проблема с реакцией?):

Неперехваченная ошибка: не удается найти данные модуля: image / png; base64 ...

вы можете открыть свое изображение в браузере?

Dinosan0908 24.08.2018 13:55

и вы пытались указать URL-адрес файла в src вместо использования require ()?

Dinosan0908 24.08.2018 13:56

поменять URL-загрузчик на загрузчик файлов

PlayMa256 24.08.2018 14:25

@ Dinosan0908 1. Я использую React Router, поэтому не думаю, что могу перейти к изображению, не создавая серверный маршрут для его обслуживания? 2. как <img src = "image / sample.png" />? Да, ошибки нет, но изображение не отображается.

Luckyfield 24.08.2018 14:31

@ PlayMa256 Я попытался использовать как url-loader, так и file-loader, как по отдельности, так и вместе в webpack, настроив параметры для url-loader, чтобы он переключался на загрузчик файлов при определенном размере изображения. Не повезло.

Luckyfield 24.08.2018 14:33
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
5
4 848
1

Ответы 1

В вашем web.config.js вам понадобится

const imageLoaderConfiguration = {
  test: /\.(gif|jpe?g|png|svg)$/,
  use: {
    loader: 'file-loader',
    options: {
      name: '[name].[ext]',
    },
  },
};

и добавьте сюда

 module: {
    rules: [
      ...
      imageLoaderConfiguration,
      ...
    ],
  },

не сработало. вы думаете, что разработка в Amazon Cloud9 имеет к этому какое-то отношение?

Luckyfield 24.08.2018 15:30

Не уверен, нужно будет увидеть файлы в вашем каталоге.

SGhaleb 24.08.2018 15:37

Другие вопросы по теме