如何在React中显示从Express服务器获取的图像?
我只是对如何从源文件夹正确提供资产感到困惑。
相关的服务器端代码(客户端向/ 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.currImage是4个文件名之一):
<img alt="scan" src={ require(this.state.currImage)}
我收到一条错误消息:“未处理的拒绝(错误):找不到模块'./static/images/file1.jpg']
回答如下:[您似乎可以从图像加载中删除require
,因为它是图像的路径而不是javascript模块的路径。
<img alt="scan" src={this.state.currImage}
您可能需要更新这些图像的URL以指向服务器URL。现在,字符串为./static/images/file1.jpg
,但可能需要为/images/file1.jpg
。