JavaScript не будет работать при развертывании Heroku, но работает локально

Я написал эту функцию в 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_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 Это огромный файл, поэтому вам нужно искать слово для расширения. это слово уникально для рассматриваемой функции.

Я все еще очень плохо знаком с рельсами, поэтому я не уверен, куда идти дальше. Я мог бы попытаться изменить местоположение моего JS, но я не думаю, что это было бы идеально. У кого-нибудь есть предложения?

Потому что все это прекрасно работает в моей локальной среде... Я подозреваю, что я делаю какую-то ошибку новичка, которую можно исправить с помощью какого-то волшебного лайнера, которого я еще не нашел.

1 ответ

Решение

Как отметил Ян Климо в комментарии, я удалил API карт Google и все еще имел функции, ожидающие, что API будет существовать. Из-за этих ошибок мой скрипт не работал.

Решением было удалить все ссылки на удаленный API.

Другие вопросы по тегам