JavaScript 无法在 Heroku 部署中使用,但可以在本地使用
JavaScript won't work in Heroku deployment but works locally
我在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 的了解还不够,无法从中获得任何见解。
我用 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
这是一个巨大的文件,因此您需要搜索可扩展一词。该词对于相关函数是唯一的。
我对 rails 还是很陌生,所以我不确定从这里到哪里去。我可以尝试更改我的 js 的位置,但我认为这不是理想的选择。有人有什么建议吗?
因为这在我的本地环境中一切正常......我怀疑我犯了一些初学者的错误,可以用我还没有找到的一些神奇的 1 衬垫来修复。
正如 Jan Klimo 在评论中指出的那样,我已经删除了 google 映射 API 并且仍然具有期望 API 存在的函数。这些错误导致我的脚本无法运行。
解决方案是删除对已删除 API.
的所有引用
我在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 的了解还不够,无法从中获得任何见解。
我用 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
这是一个巨大的文件,因此您需要搜索可扩展一词。该词对于相关函数是唯一的。
我对 rails 还是很陌生,所以我不确定从这里到哪里去。我可以尝试更改我的 js 的位置,但我认为这不是理想的选择。有人有什么建议吗?
因为这在我的本地环境中一切正常......我怀疑我犯了一些初学者的错误,可以用我还没有找到的一些神奇的 1 衬垫来修复。
正如 Jan Klimo 在评论中指出的那样,我已经删除了 google 映射 API 并且仍然具有期望 API 存在的函数。这些错误导致我的脚本无法运行。
解决方案是删除对已删除 API.
的所有引用