使用express.static配置静态资源后无法访问上传图片,如何修复?
解决Express静态资源无法访问的问题
核心错误原因
你代码里错误地使用了app.set来配置静态资源目录,而Express中托管静态资源必须用app.use配合express.static中间件。app.set是用来设置Express应用的配置项(比如视图引擎、端口等),根本不能用来托管静态文件,这直接导致你的public目录没有被正确注册为静态资源目录。
修正步骤
替换错误的静态资源配置代码:
将:app.set(express.static(path.join(__dirname, 'public')));修改为:
app.use(express.static(path.join(__dirname, 'public')));调整访问路径
当你用上述正确方式托管public目录后,访问静态资源时不需要在URL中添加/public前缀。比如你之前的请求/public/Screenshot-2022-09-13%20193207.jpg-1663505928511.jpeg应该改为:/Screenshot-2022-09-13%20193207.jpg-1663505928511.jpeg
可选:保留/public前缀的配置
如果你希望必须通过/public/xxx的路径访问静态资源,可以给express.static添加挂载路径前缀:
app.use('/public', express.static(path.join(__dirname, 'public')));
这样配置后,你原来的请求路径/public/Screenshot-2022-09-13%20193207.jpg-1663505928511.jpeg就能正常访问了。
内容的提问来源于stack exchange,提问作者wavesico
相关产品推荐
相关产品推荐

