Javascript Rails Ruby 随机不加载 5.2.3 生产模式

Javascript randomly not loading on Ruby on Rails 5.2.3 Production Mode

我在 Rails 的 Ruby 还是个新手。这个框架对我来说真的很棒。但是,自从我将其上传到制作中后,我仍然不明白为什么 Rails 5.2.3 上的 Ruby 在某些随机情况下无法正确加载 JavaScript。有时它会在第一次尝试打开页面时正确加载,但当它没有正确加载时,用户有时甚至必须刷新几次才能正确加载。我还从浏览器中收到错误

GET .../assets/jquery-ui-1.8.16.custom.css net::ERR_ABORTED 500

当我没有以任何方式导入甚至编写一行代码来导入该文件时,因为我使用了从 CDN 加载的 JQuery UI 1.12.1。

What is really important is, why Ruby on Rails 5.2.3 on some random occasions does not load the JavaScript properly?

不仅生产模式会出现,开发模式也会偶尔出现这个问题

我将 post application.js 和 application.scss 以及 application.html.erb 的头部部分给出我在这种情况下做错了什么的见解:

application.js

//= require jquery3
//= require jquery-ui/core
//= require jquery-ui/widgets/slider
//= require rails-ujs
//= require popper
//= require cocoon
//= require social-share-button
//= require social-share-button/wechat
//= require rippleria/js/jquery.rippleria.min
//= require_tree .

application.scss

/*
 *= require gmaps-auto-complete
 *= require social-share-button
 *= require jquery-ui/core
 *= require jquery-ui/slider
 */

 @import "pretty-checkbox/dist/pretty-checkbox";
 @import "rippleria/css/jquery.rippleria";

application.html.erb

<%= stylesheet_link_tag 'application', 媒体: 'all' %>

<%= stylesheet_link_tag    'sub/style' %>
<%= stylesheet_link_tag    'sub/components.min' %>
<%= stylesheet_link_tag    'sub/custom' %>
<%= stylesheet_link_tag    'sub/chat.min' %>

<%= javascript_include_tag 'application', async: Rails.env.production? %>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/galleria/1.5.7/galleria.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/4.6.3/flatpickr.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.10/js/select2.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/owl.carousel.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js"></script>

如果你们能让我知道我可以采取哪些解决方案来避免这种随机行为,我将不胜感激?非常感谢您的宝贵时间。 :)

没关系,我已经解决了问题。 Rails 上 Ruby 的主要问题是,如果我们通过下面写的依赖关系使用 Rails 5.2.3 提供的 JQuery

gem 'jquery-rails'

它将生成包含以下行的应用程序 CSS 文件

@import 'jquery-ui.1.8.6.custom.css'

不由自主地导入JQueryUI自定义CSS虽然assets文件夹没有上面写的文件

解决方案:

我建议您 AGAINST 使用 Rails 5.2.3 提供的 JQuery 并使用 CDN 方法更改 JQuery 以获得最佳效果表现。因此,您可以删除 application.js

上的以下行
//= require jquery3

然后在 application.html.erb 上的 application.js 之前加载 JQuery 的顺序,如下行:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<%= javascript_include_tag 'application', async: Rails.env.production?, :cache => 'cached/all' %>

希望我的解决方案能有所帮助。 :)