2014-02-18 3 views
1

Когда я нахожусь в режиме разработки, все работает, и у меня есть порядок импорта следующий .js:Rails трубопровода активов скомпилирован JS ошибки

<!-- Scripts --> 
<script src="/assets/jquery/jquery.min.js?body=1"></script> 
<script src="/assets/jquery-ujs/src/rails.js?body=1"></script> 
<script src="/assets/1modernizr.custom.js?body=1"></script> 
<script src="/assets/2rainyday.0.1.2.min.js?body=1"></script> 
<script src="/assets/3xrain_init_youtube.js?body=1"></script> 
<script src="/assets/3xxbootstrap.min.js?body=1"></script> 
<script src="/assets/4classie.js?body=1"></script> 
<script src="/assets/5modalEffects.js?body=1"></script> 
<script src="/assets/6jquery.placeholder.js?body=1"></script> 
<script src="/assets/7jquery.custom.js?body=1"></script> 
<script src="/assets/8script.js?body=1"></script> 
<script src="/assets/application.js?body=1"></script> 
<script> 

    $(document).ready(function(){ 
     $("#countdown").countdown({ 
        date: "3 march 2014 12:00:00", 
        format: "on" 
       }, 

       function() { 
        // callback function 
       }); 
    }); 

</script> 

И в производстве, это как следующее:

<!-- Scripts --> 
<script src="/assets/application-afbc85ff07d9057a50dee5713b8bccdf.js"></script> 
<script> 

    $(document).ready(function(){ 
     $("#countdown").countdown({ 
        date: "3 march 2014 12:00:00", 
        format: "on" 
       }, 

       function() { 
        // callback function 
       }); 
    }); 

</script> 

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

Вызов обратный отсчет после импорта application.js, так почему это происходит? Возможно ли, что встроенный скрипт выполняется до application.js? Если да, то почему этого не происходит в разработке с разделенными файлами?

Вторая ошибка:

Uncaught TypeError: Cannot call method 'addEventListener' of null 

Update:

Если я ставлю setInterval я решить первую ошибку, как это:

<script> 
    $(document).ready(function(){ 
     setInterval(1000, function(){ 
       $("#countdown").countdown({ 
        date: "3 march 2014 12:00:00", 
        format: "on" 
        }, 

        function() { 
          // callback function 
        } 
      ); 

     }); 
    }); 

</script> 

Так что я думаю, что рядный сначала выполняется сценарий. Это очень странно.

+0

Да я сделал, это последнее, 8script.js. – Jirico

+0

Попробуйте поместить setInterval внутри document.ready, а не за его пределами. –

+0

Попробуйте предварительно скомпилировать активы с рейк-активами: precompile --trace RAILS_ENV = создание до развертывания приложения – Monideep

ответ

4

Вы видите эту ошибку из-за того, перед ним: Uncaught TypeError: Cannot call method 'addEventListener' of null

Это происходит в производстве, потому что все JS находится в одном файле, и если есть ошибка, то остальное не выполняется. Он работает в разработке, потому что 5modalEffects.js - это отдельный файл, поэтому ошибка в этом файле не влияет ни на какие другие.

мне удалось исправить модальную ошибку, добавив .md-close класс кнопкой закрытия модального внутри div#modal-1 и это решается другой вопрос :)

+0

@Jirico Я обновил свой ответ :) – Simon

+1

Ницца! Ты был прав. Первая ошибка появляется в режиме разработки и вызывает ошибку обратного отсчета. Спасибо и извините за ваше время :) – Jirico

Смежные вопросы