【问题标题】:Javascript randomly not loading on Ruby on Rails 5.2.3 Production ModeJavascript 随机未在 Ruby on Rails 5.2.3 生产模式上加载
【发布时间】:2020-04-02 05:57:33
【问题描述】:

我还是 Ruby on Rails 的新手。这个框架对我来说真的很棒。但是,自从我将它上传到生产环境中,我仍然不明白为什么 Ruby on Rails 5.2.3 在某些随机场合无法正确加载 JavaScript。有时它会在第一次尝试打开页面时正确加载,但如果没有,用户有时甚至需要刷新几次才能正确加载。我也从它说的浏览器中得到错误

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

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

真正重要的是,为什么 Ruby on Rails 5.2.3 会随机出现 有时无法正确加载 JavaScript?

不仅在生产模式下会发生,在开发模式下也会随机出现这个问题。

我将发布 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    '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>

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

【问题讨论】:

    标签: javascript jquery css sass ruby-on-rails-5.2


    【解决方案1】:

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

    gem 'jquery-rails'
    

    它将使用以下行生成应用程序 CSS 文件

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

    虽然assets文件夹没有上面写的文件,却不自觉地导入了JQuery UI Custom CSS

    解决方案:

    我建议您反对使用 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' %>
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      • 2022-08-09
      • 2013-12-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多