【问题标题】:bootstrap styles missing after deploy to Heroku部署到 Heroku 后缺少引导样式
【发布时间】:2015-10-26 17:01:21
【问题描述】:

根据我过去两天一直在做的谷歌搜索,我加入了数百(如果不是数千)在部署到 Heroku 时失去引导样式的人。与其他所有人一样,引导程序样式在本地计算机上运行良好,但在部署的 heroku 站点上不存在。我很难过。我正在使用 rails 4.2.4 和 ruby​​ 2.2.3。 (我也在使用 RubyMine,如果这会有所不同。我认为不会。我尝试使用“普通”git 和 sublime 进行部署,但没有任何区别。)这是我所做的:

  1. 我的 application.html.erb(css 和 js)中有指向 maxcdn 的链接
  2. 我把application.css的名字改成了application.scss(我也试过application.css.scss)
  3. 我将@import 指令(boostrap-sprockets 和 bootstrap)添加到 application.scss
  4. 我在 application.js 中添加了 //= require bootstrap-sprockets(在 turbolinks 条目之后)。
  5. 我添加了 gems bootstrap-sass、autoprefixer-rails 和 rails_12factor 并进行了捆绑安装
  6. 我在 config/environments/production.rb 中将 config.assets.compile 从 false 更改为 true
  7. 我也尝试过预编译资产,但仍然缺少引导样式。

我相信这就是我应该做的一切才能让它发挥作用。如上所述,它在本地机器上运行良好。

我尝试了很多网络上建议的解决方案,但都没有奏效。很难说哪些是适用的,因为这似乎是几年来的问题(我的谷歌搜索返回这样的问题,以及从 2012 年至今的建议解决方案)。我确信其中一些解决方案不再适用(对于 rails v4)。

像往常一样,感谢任何帮助。

【问题讨论】:

  • 根据我的经验,您列表中唯一有效的方法是 maxcdn 链接。当您尝试使用 maxcdn 时,您是否摆脱了任何其他引导程序?
  • 没有。我一起使用了所有的更改。我没有尝试只添加 maxcdn 并消除所有其他更改。
  • 如果这不是讽刺,你应该尝试一下(我这么说是因为这听起来很讽刺,但我可能误解了)
  • 我很绝望。根据您的建议,我只是尝试删除 application.scss 和 application.js 中对 bootstrap 的引用。没有快乐。
  • 我会写一个答案来描述我是如何包含它的,也许它可以帮助你

标签: css ruby-on-rails ruby twitter-bootstrap heroku


【解决方案1】:

尝试从头开始一个项目,并让 Bootstrap 在生产中工作。我用 maxcdn 方法成功地做到了。

这是我为包含引导程序 maxcdn 所做的:

app/views/layouts/application.html.erb,在<head> 标签的末尾:

<!-- BOOTSTRAP -->
<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"> </script>

我只做了这个,没有别的。即使在 Heroku 上的生产中,它也很有效。

【讨论】:

  • 好吧,这行得通!我成功地向 Heroku 部署了一个引导演示页面,所有样式都完好无损!感谢您的帮助。现在我只需要删除我添加到其他应用程序的所有引导程序特定的东西。谢谢。
  • 我不知道如何将其标记为已回答。我没有看到按钮或链接。可能是因为我的声望点太少了。
  • 答案左侧有一个“选中”符号,您可以单击它。这是一张图片:i.stack.imgur.com/uqJeW.png
  • 好的。对不起。那个图形对我来说有点太微妙了!通常人们使用 2x4 与我交流!
  • 谢谢! :)(但我不知道什么是 2x4)
【解决方案2】:

我不必“尝试从头开始一个项目”。只需添加

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.1/js/bootstrap.min.js"> </script>

帮我搞定了。

【讨论】:

    【解决方案3】:

    我的解决方案是在 CLI 中运行此命令

    rake assets:clobber rake assets:precompile RAILS_ENV=development git add . git commit -m "Precompile assets in preparation for deploying to Heroku." git push heroku master

    对我来说就像魔法一样!

    【讨论】:

      【解决方案4】:

      我今天遇到了这个问题。帮助我的是检查节点和纱线的版本(当然,如果你使用它)。指出我今天使用的主要堆栈是有道理的。

      gemfile:
      Rails 6.1.4, ruby '3.0.0', 'webpacker', '~> 5.0'
      
      package.json:
       "node": "15.14.0", "yarn": "1.22.15", "bootstrap": "4.5.0"
      

      所以引导程序在开发中按预期工作,但在生产中没有(heroku)

      简而言之:区别在于开发和生产环境中节点和纱线的版本。如果你没有在 package.json 中设置 Heroku 使用默认版本。就我而言,heroku 比我的本地要低一些。

      我已将 json 的下一部分添加到 package.json 中,heroku 会在部署后接受并设置它。就是这样。

       "engines": {
          "node": "15.14.0",
          "yarn": "1.22.15"
        }
      

      【讨论】:

        猜你喜欢
        • 2019-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-22
        • 2014-06-10
        • 1970-01-01
        • 2017-10-16
        • 2016-10-27
        相关资源
        最近更新 更多