2014-02-18 81 views
1

當我在開發模式是,一切正常,我有以下的.js輸入命令:滑軌資產管道編譯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> 

問題是我在生產模式中遇到一些我無法理解的錯誤。第一個錯誤是:

對countdown的調用是在導入application.js之後,爲什麼會發生?在application.js之前是否有可能執行了內聯腳本?如果是這樣,那爲什麼在分隔文件的開發中不會發生?

第二個錯誤是:

Uncaught TypeError: Cannot call method 'addEventListener' of null 

更新:

如果我把一個的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

嘗試使用rake資源預編譯資源:預編譯 - 跟蹤部署應用程序之前的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