Я просто немного запутался, как правильно обслуживать активы из исходной папки.

Соответствующий код на стороне сервера (клиент делает запрос к / images, сервер отправляет обратно имена файлов):

const images = './static/images/';
app.use(express.static('static/images'))

app.get('/images', (req, res) => {
    res.setHeader('Content-Type', 'application/json');
    fs.readdir(images, (err, files) => {
        res.send(files);
      });
});

Моя структура каталогов выглядит так:

public
   index.html
server (houses Node/Express code)
   index.js
src (houses React code)
   App.js
static
   images
      image1, image2, image4, image4

Если я попытаюсь отобразить изображение в React (State.Curnimage - один из 4 имен файлов):

<img alt="scan" src={ require(this.state.currImage)}

Я получаю сообщение об ошибке «Необработанное отклонение (ошибка): не удается найти модуль './static/images/file1.jpg'»

0
BlahZayBlahZay 4 Окт 2019 в 21:53

1 ответ

Лучший ответ

Похоже, вы могли бы удалить require из загрузки изображения, учитывая, что это путь к изображению, а не путь к модулю javascript.

<img alt="scan" src={this.state.currImage}

Возможно, вам может потребоваться обновить URL этих изображений, чтобы указать на URL-адрес сервера. Прямо сейчас строка ./static/images/file1.jpg, но может потребоваться быть /images/file1.jpg.

3
ktilcu 4 Окт 2019 в 19:07