Node.js Express框架出现Cannot GET /xxx.jpg图片资源无法访问问题排查
问题原因
- Express默认不会对外暴露任何本地目录的静态资源,你没有配置静态资源托管中间件,所以针对图片文件的GET请求找不到对应的处理逻辑,就返回
Cannot GET /xxx.jpg错误。 - 你当前仅实现了根路径返回随机图片地址的JSON接口,没有对图片资源的访问做路由匹配或者静态托管配置。
解决方案
- 配置静态资源托管
在所有业务路由定义之前,添加Express内置的static中间件配置,把你存放图片的./img目录对外暴露:
// 引入path模块处理绝对路径,避免相对路径出错 const path = require('path') // 托管img目录下的所有文件,访问路径直接为/xxx.jpg app.use(express.static(path.join(__dirname, 'img')))
如果你希望图片的访问路径前缀带上/img,比如/img/37.jpg,可以修改配置为:
app.use('/img', express.static(path.join(__dirname, 'img')))
- 调整返回的图片路径
根据你配置的静态资源访问规则,修改接口返回的image字段值,确保返回的路径和实际可访问的路径一致:
// 无路径前缀的场景,域名部分替换为你实际的服务域名 var file = `https://你的域名/${floppa[random]}` // 带/img前缀的场景 var file = `https://你的域名/img/${floppa[random]}`
配置完成后重启服务即可正常访问图片资源。
内容的提问来源于stack exchange,提问作者efewtf
相关产品推荐
相关产品推荐

