部署React应用时图片存build还是public文件夹?PUBLIC_URL是否指向build目录?
解答
首先明确:process.env.PUBLIC_URL 的值在项目构建阶段就已经固定,和部署时的服务器目录映射规则没有关联:
- 如果你没有自定义过
PUBLIC_URL配置(默认情况),该变量取值为空字符串,你拼接出的图片路径实际为/assets/${coin.itemId}.png。此时部署服务器根目录指向build文件夹时,该路径会直接匹配到build目录下的assets文件夹内的对应资源,完全符合预期。 - 如果你构建时手动指定过
PUBLIC_URL取值(比如需要部署到域名子路径时设置为/xxx),拼接出的路径会带此前缀,此时服务器根目录直接指向build文件夹会出现资源404,需要将对应前缀路径映射到build文件夹才能正常访问。
你当前的写法是React脚手架官方推荐的public目录静态资源访问方式,public目录下的assets文件夹会在构建时完整拷贝到build目录根路径下,只要未自定义PUBLIC_URL,无需额外调整即可正常运行。
你使用的代码正确格式如下:
<img alt="Screenshot" src={`${process.env.PUBLIC_URL}/assets/${coin.itemId}.png`} onClick={() => { setImgTrue(true); setTempImg( `${process.env.PUBLIC_URL}/assets/${coin.itemId}.png` ); }} />
内容的提问来源于stack exchange,提问作者user17399782
相关产品推荐
相关产品推荐

