【问题标题】:Javascript and Heroku. Script not running on server even though it runs locallyJavascript 和 Heroku。脚本不在服务器上运行,即使它在本地运行
【发布时间】:2012-07-04 07:24:42
【问题描述】:

我有一个带有 Slidedeck jquery 插件的站点。当我在本地提供它时,它工作得很好,看起来很棒。但是,在我将它推送到 Heroku 之后,它根本不起作用。

我正在使用 sprockets 包含我的所有文件,并且我还使用了一个处理主题的 gem (themes_for_rails)。我在配置中有一个初始化程序:

 ThemesForRails.config do |config|
  # themes_dir is used to allow ThemesForRails to list available themes. It is not used to resolve any paths or routes.
  config.themes_dir = ":root/app/assets/themes"

  # assets_dir is the path to your theme assets.
  config.assets_dir = ":root/app/assets/themes/halo"

  # views_dir is the path to your theme views
  config.views_dir =  ":root/app/views/themes/halo"

  # themes_routes_dir is the asset pipeline route base. 
  # Because of the way the asset pipeline resolves paths, you do
  # not need to include the 'themes' folder in your route dir.
  #
  # for example, to get application.css for the default theme, 
  # your URL route should be : /assets/default/stylesheets/application.css
  config.themes_routes_dir = "assets"
end

这是在我的 application.js 中:

//= require jquery
//= require jquery_ujs
//= require_tree .
//= require_tree ../themes/halo/javascripts

也许我的问题是我在 Heroku 中使用了相对路径。不过,我不知道如何做绝对路径。

【问题讨论】:

    标签: javascript ruby-on-rails-3 heroku


    【解决方案1】:

    我以前没有使用过 Slidedeck 库,但这里有一些事情可以用来缩小你的错误来源:

    • Javascript 出错。在 Heroku 上的应用程序中加载控制台。基本的 Javascript 工作吗?如果不是,那么可能是某些错误正在吞噬您的错误——我以前见过这种情况,但我无法找到究竟是什么原因造成的。

    • Slidedeck 加载是否真的存在问题?如果它被包装在一个类中(就像 jQuery 是如何被包装在 jQuery 类中的),你能在控制台中引用那个类吗?

    • 相对路径在 Heroku 上应该没问题...但我注意到这一行:

      //= require_tree ../themes/halo/javascripts

      您需要app/assets/themes/halo/javascripts 的等价物。那正确吗?为什么不使用javascripts 文件夹?如果您在此文件夹中也有 css 和图像,则可以将它们拆分到各自的 app/assets/ 子文件夹中,以确保这一点。 (我的队友告诉我这不是或不应该是必要的,但我发现它在一两次情况下可以帮助我)。

    • 是否存在与资产预编译失败相关的向 Heroku 推送的控制台错误?他们有专门的页面来解决该错误。

    【讨论】:

    • 谢谢你,埃里克。 - 不确定如何在 rails 控制台中测试 js 功能。我试过 console.log("test"); - 再次,不知道如何从控制台访问 js(细节?) - 我的意思是要求这些特定的主题文件夹并将它们分开,但如果它因此不起作用,我愿意适应. css 和图像按照您的建议进行拆分。 - 没有预编译失败。在推送之前,我按照 Heroku 开发中心的说明进行了预编译。这在我正在开发的其他应用程序中运行良好。
    • 啊,我的意思是在浏览器的 Javascript 控制台中。如果您不使用 Firebug(在 Firefox 上)或 Web Inspector(在 Chrome 上),我强烈推荐它。我更喜欢 Firebug。
    • 我可以在我的本地服务器上引用 SlideDeck 的类,但不能在 Heroku 站点上。我还没有解决这个问题。
    • 因此,您的 include_tree 相对路径中没有正确包含 javascript 文件。作为一个黑客,我可以建议将app/assets/themes/halo/javascripts/ 移动到app/assets/javascripts/halo/ 看看它是否有效吗?
    • 我搞定了。我删除了一些不起作用的 .js 文件。两者都与网络字体相关(Cufon)。谢谢,埃里克。我按照您的指示使用了很多控制台。
    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    相关资源
    最近更新 更多