2014-02-18 83 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