Production error: "image is not present in the asset pipeline" although it is there and working in dev environment?

Production error: "image is not present in the asset pipeline" although it is there and working in dev environment?

我是 devops 的新手,不知道发生了什么。今天我们将一个分支推向了生产环境,我们在其中使用新图像进行视图。

在开发环境中一切正常,但是当它被提升到生产环境时,我们开始出现与资产管道中找不到新图像相关的错误

  <div class="text-center my-10">
    <%= link_to t("url.static_site") do %>
      <%= image_tag "logo-white-no-background" %>
    <% end %>
  </div>

错误:

The asset "logo-white-no-background" is not present in the asset pipeline.

我已经在本地尝试 运行 bundle exec rake assets:precompile 来模拟生产中发生的事情(据我所知,/assets 下的所有内容都已预编译并由网络服务器提供服务)但我没有得到任何结果错误。

我在 docs 中发现的唯一不同之处是我没有在 image_tag 中传递文件扩展名,尽管就像我说的那样它正在开发中工作(实际上如果我在那个环境中添加扩展程序就会中断)。

我是否应该尝试在生产环境中强制预编译以查看它是否正确加载?

我还能尝试什么?

您需要添加扩展程序才能在生产环境中使用!

它不应该在开发中破坏它,确保你 运行 rails assets:cleanrails assets:clobber 清理编译的资产并且你有正确的文件扩展名!

该扩展不仅是对浏览器的提示,也是对某些后端服务器的提示。没有人强迫开发人员添加扩展;但是,您可以将添加扩展名视为一种良好的编码习惯。

比如你的图片是jpg,但是浏览器显示的是png。您发现正确显示的图像可能恰好是浏览器正确猜测了文件类型。在某些情况下,如从 S3 下载文件,如果没有提供扩展名,它将作为 pdf 文件提供。

顺便说一句,关于你的问题,因为它在生产环境中没有显示图像。您可以先通过检查源代码来检查 src。如果浏览器无法通过URL找到图片文件,那么URL就无效了。检查图像的 URL 后,您可以尝试生成正确的 URL 然后。