Javascript Rails资产管道编译js错误
当我处于开发模式时,一切正常,我有以下.js导入顺序:Javascript Rails资产管道编译js错误,javascript,ruby-on-rails,asset-pipeline,production,Javascript,Ruby On Rails,Asset Pipeline,Production,当我处于开发模式时,一切正常,我有以下.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"
<!-- 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>
倒计时是在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>
$(文档).ready(函数(){
setInterval(1000,函数(){
$(“#倒计时”)。倒计时({
日期:“2014年3月3日12:00:00”,
格式:“on”
},
函数(){
//回调函数
}
);
});
});
所以我认为内联脚本是首先执行的。这很奇怪。您看到这个错误是因为它前面的错误:
未捕获的TypeError:无法调用null的方法“addEventListener”
这种情况发生在生产环境中,因为所有的JS都在一个文件中,如果出现错误,则不会执行其余的JS。它在开发中起作用,因为5modalEffects.js
是一个单独的文件,所以该文件中的错误不会影响任何其他文件
我通过将
.md close
类添加到div#modal-1
中的close model按钮中,成功地修复了模式错误,这解决了另一个问题:)您看到的错误是因为它前面的错误:未捕获的TypeError:无法调用null的方法“addEventListener”
这种情况发生在生产环境中,因为所有的JS都在一个文件中,如果出现错误,则不会执行其余的JS。它在开发中起作用,因为5modalEffects.js
是一个单独的文件,所以该文件中的错误不会影响任何其他文件
我设法通过将
.md close
类添加到div#modal-1
中的close model按钮来修复模式错误,这解决了另一个问题:)是的,这是最后一个,8script.js.尝试将setInterval放在document.ready内,而不是放在itTry外,以使用rake资产预编译资产:precompile--trace RAILS_ENV=production,然后再部署app@Baloo,没错,但这只是一个测试,表明内联脚本在所有application.js文件之前执行,但我认为这是一个错误的行为。@deep,我刚做了,但预编译过程中没有错误。是的,我做了,这是最后一个,8script.js。尝试将setInterval放在文档内。准备好了,而不是放在文档外,尝试使用rake资产预编译资产:precompile--trace RAILS_ENV=production,然后再部署app@Baloo,你是对的,但这只是一个测试,表明内联脚本在所有application.js文件之前执行,但我认为这是一个错误的行为。@deep,我刚刚做了,但在预编译过程中没有错误。很好!你是对的。第一个错误确实出现在开发模式中,它导致了倒计时错误。谢谢,抱歉耽误了你的时间:)太好了!你是对的。第一个错误确实出现在开发模式中,它导致了倒计时错误。感谢并抱歉占用您的时间:)
Uncaught TypeError: Cannot call method 'addEventListener' of null
<script>
$(document).ready(function(){
setInterval(1000, function(){
$("#countdown").countdown({
date: "3 march 2014 12:00:00",
format: "on"
},
function() {
// callback function
}
);
});
});
</script>