JavaScript 无法在 Heroku 部署中使用,但可以在本地使用

JavaScript won't work in Heroku deployment but works locally

我在app/assets/javascripts/expand.js中写了这个函数

$( document ).ready(function() {
  var open = $('.toggle-expand'),
      a = $('ul').find('a');

  open.click(function(e){
      e.preventDefault();
      var $this = $(this),
          speed = 500;
      if($this.hasClass('active') === true) {
          $this.removeClass('active').next('.expandable').slideUp(speed);
      } else if(a.hasClass('active') === false) {
          $this.addClass('active').next('.expandable').slideDown(speed);
      } else {
          a.removeClass('active').next('.expandable').slideUp(speed);
          $this.addClass('active').next('.expandable').delay(speed).slideDown(speed);
      }
  });
});

该脚本在本地运行良好并按预期运行,但当我部署到 Heroku 时它完全停止工作。

作为参考,这里是脚本正在作用的HTML:

   <ul>
      <li>
         <a href="#" class="toggle-expand"><h2>text here</h2></a>
          <div class="expandable">
           ...more stuff here
          </div>
      </li>
      ...more li tags here
    </ul>

调试我已经完成:

通过将 development.rb 中的一行更改为 config.assets.debug = false,我已经能够在我的开发环境中重现该问题。我对 rails 的了解还不够,无法从中获得任何见解。

我用 RAILS_ENV=production bundle exec rake assets:precompile 预编译了所有资产。并将其推高。

在那之后没有用我在 git rm -r public/assets/

之后再次尝试预编译

当这不起作用时,我使用 chrome 或 firefox 上的开发人员工具来查看我的生产环境中加载的所有丑化 js。我看到我的功能似乎已经加载,但我没有看到我期望的功能,所以我也不知道那里发生了什么。

要查看我看到的内容,您可以转到 https://www.shopperbot.com/about 并查看资源 https://www.shopperbot.com/assets/application-db55113ff25f4decb133ccb74aa98298822de2381cddc0ae3fa8c03b65180dd0.js 这是一个巨大的文件,因此您需要搜索可扩展一词。该词对于相关函数是唯一的。

我对 rails 还是很陌生,所以我不确定从这里到哪里去。我可以尝试更改我的 js 的位置,但我认为这不是理想的选择。有人有什么建议吗?

因为这在我的本地环境中一切正常......我怀疑我犯了一些初学者的错误,可以用我还没有找到的一些神奇的 1 衬垫来修复。

正如 Jan Klimo 在评论中指出的那样,我已经删除了 google 映射 API 并且仍然具有期望 API 存在的函数。这些错误导致我的脚本无法运行。

解决方案是删除对已删除 API.

的所有引用