未在heroku上加载Javascript

未在heroku上加载Javascript,javascript,ruby-on-rails,ruby,heroku,ruby-on-rails-5,Javascript,Ruby On Rails,Ruby,Heroku,Ruby On Rails 5,我正在尝试部署一个应用程序。我的javascript在开发时加载得很好,但在生产时却没有加载。即使我在生产中也没有遇到任何错误。如果有人需要更多信息,请告诉我。 我已经尝试了下面的命令 heroku run rake资产:预编译——应用程序我的应用程序 我还尝试了alert()函数,但它在heroku上也不起作用 <script type="text/javascript"> $(function() { $(document)

我正在尝试部署一个应用程序。我的javascript在开发时加载得很好,但在生产时却没有加载。即使我在生产中也没有遇到任何错误。如果有人需要更多信息,请告诉我。
我已经尝试了下面的命令

heroku run rake资产:预编译——应用程序我的应用程序

我还尝试了alert()函数,但它在heroku上也不起作用

<script type="text/javascript">
            $(function() {
                $(document).ready(function() {
                    $('.flexslider').flexslider({
                        animation: "fade",
                        slideshowSpeed: 4000,
                        animationSpeed: 600,
                        controlNav: false,
                        directionNav: true,
                        controlsContainer: ".flex-container" // the container that holds the flexslider
                    });
                });
            });
        </script>
application.js

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, or any plugin's
// vendor/assets/javascripts directory can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// compiled file. JavaScript code in this file should be added after the last require_* statement.
//
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
// about supported directives.
//
//= require jquery
//= require jquery_ujs
//= require_tree .

在控制台上查看错误是什么

如果您使用任何jquery库,那么使用
jqueryrails
实现Gemfile,如下所示

# Use jquery as the JavaScript library
gem 'jquery-rails'
$(document).on('turbolinks:load', function(){
  $('.flexslider').flexslider({
    animation: "fade",
    slideshowSpeed: 4000,
    animationSpeed: 600,
    controlNav: false,
    directionNav: true,
    controlsContainer: ".flex-container" // the container that holds the flexslider
  });
});
然后安装包

然后更新
application.js

//= require jquery
如果您的应用程序使用的是
turbolinks
,请按如下方式修改您的代码

# Use jquery as the JavaScript library
gem 'jquery-rails'
$(document).on('turbolinks:load', function(){
  $('.flexslider').flexslider({
    animation: "fade",
    slideshowSpeed: 4000,
    animationSpeed: 600,
    controlNav: false,
    directionNav: true,
    controlsContainer: ".flex-container" // the container that holds the flexslider
  });
});

希望能帮助您在控制台上查看错误是什么

如果您使用任何jquery库,那么使用
jqueryrails
实现Gemfile,如下所示

# Use jquery as the JavaScript library
gem 'jquery-rails'
$(document).on('turbolinks:load', function(){
  $('.flexslider').flexslider({
    animation: "fade",
    slideshowSpeed: 4000,
    animationSpeed: 600,
    controlNav: false,
    directionNav: true,
    controlsContainer: ".flex-container" // the container that holds the flexslider
  });
});
然后安装包

然后更新
application.js

//= require jquery
如果您的应用程序使用的是
turbolinks
,请按如下方式修改您的代码

# Use jquery as the JavaScript library
gem 'jquery-rails'
$(document).on('turbolinks:load', function(){
  $('.flexslider').flexslider({
    animation: "fade",
    slideshowSpeed: 4000,
    animationSpeed: 600,
    controlNav: false,
    directionNav: true,
    controlsContainer: ".flex-container" // the container that holds the flexslider
  });
});

希望对rails 5中引入的rails ujs有所帮助,它不是为了使用jQuery,而是为了摆脱jQuery依赖而开发的

因此,如果您仍然需要jQuery,则需要具有以下设置:

档案:

gem'jqueryrails'

application.js:

//=需要jquery
//=需要jquery\u ujs


并删除
/=require rails ujs
(如果已经存在于
应用程序中)。rails 5中引入的js
rails ujs
)不是为了使用jQuery而开发的,它是为了摆脱jQuery依赖

因此,如果您仍然需要jQuery,则需要具有以下设置:

档案:

gem'jqueryrails'

application.js:

//=需要jquery
//=需要jquery\u ujs


并删除
/=require rails ujs
(如果已存在于
应用程序.js
中),您需要删除require_树并以这种方式加载js

//= require jquery
//= require jquery.flexslider-min
//= require jquery_ujs

您需要删除require_tree并以这种方式加载js

//= require jquery
//= require jquery.flexslider-min
//= require jquery_ujs
适用于Rails 6+(或使用Webpacker的) 如果您刚刚向Heroku部署了一个新的rails应用程序,即爱好层或类似的东西,那么您需要确保已将以下内容添加到节点构建包中:

(1) 确保已设置heroku remote:
  • 下面假设heroku是git remote的名称。您可以通过键入以下内容检查是否已设置:
git-remote-v

…你应该看到heroku列在那里。如果你看不到它,那么你需要设置一个指向heroku的git遥控器

(2) 添加NodeJS构建包
  • 这将清除构建包-如果不想删除其他构建包,请不要这样做:

heroku构建包:清除

  • 首先添加nodejs构建包(注意:这里的顺序很重要:ruby必须在nodejs之后)

heroku构建包:设置heroku/nodejs
heroku构建包:添加heroku/ruby

(3) 最后,检查您是否正确地服务于您的资产: 就我而言,我使用的是
style\u sheet\u pack\u标签

# application.html.erb
<%= stylesheet_pack_tag "application", media: 'all', 'data-turbolinks-track': 'reload' %>
#application.html.erb
希望这对别人有帮助

适用于Rails 6+(或使用Webpacker的) 如果您刚刚向Heroku部署了一个新的rails应用程序,即爱好层或类似的东西,那么您需要确保已将以下内容添加到节点构建包中:

(1) 确保已设置heroku remote:
  • 下面假设heroku是git remote的名称。您可以通过键入以下内容检查是否已设置:
git-remote-v

…你应该看到heroku列在那里。如果你看不到它,那么你需要设置一个指向heroku的git遥控器

(2) 添加NodeJS构建包
  • 这将清除构建包-如果不想删除其他构建包,请不要这样做:

heroku构建包:清除

  • 首先添加nodejs构建包(注意:这里的顺序很重要:ruby必须在nodejs之后)

heroku构建包:设置heroku/nodejs
heroku构建包:添加heroku/ruby

(3) 最后,检查您是否正确地服务于您的资产: 就我而言,我使用的是
style\u sheet\u pack\u标签

# application.html.erb
<%= stylesheet_pack_tag "application", media: 'all', 'data-turbolinks-track': 'reload' %>
#application.html.erb


希望这对别人有帮助

@ankur检查您的浏览器控制台并检查错误,然后将error@fool-Uncaught ReferenceError:$未定义hi,@ankur:在您的应用程序中。js可能您也需要添加“/=require turbolinks”,你在application.html.erb中有样式表\u link\u标记吗?@Pietro Allievi-我不需要添加turbolinks,因为我没有使用任何turbolinks功能ok@ankur这是jquery没有发现错误你可以尝试另一种方法@ankur检查你的浏览器控制台并检查错误,然后把你的error@fool-未捕获引用错误:$不是definedhi,@ankur:在您的application.js中,您可能还需要添加“/=require turbolinks”,你在application.html.erb中有样式表\u link\u标记吗?@Pietro Allievi-我不需要添加turbolinks,因为我没有使用任何turbolinks功能ok@ankur这是jquery未发现错误,你可以尝试其他方法,它仍然无法在生产中工作。我已经更新了我的问题,我仍然可以在你的gem文件中看到
gem'rails ujs','~>5.1.0.beta1'
行。它应该改为
gem'jqueryrails'
。我已经删除了rails-ujs仍然不工作。此外,我还更新了我的Gemfile并添加了Gemfile.lock。如果您需要更多信息,请告诉我我想到的最后一个想法是在预编译资产之前尝试清理资产,同时使用bundle exec``heroku run bundle exec rake assets运行资产的任务:clean heroku run bundle exec