我无法部署到heroku...我收到错误消息,找不到我的application.scss,因为heroku 正在寻找application.css。有什么建议吗?

问题描述 投票:0回答:1

当我部署到heroku时,打开日志并加载服务器日志。这是我遇到的错误...

ActionView::Template::Error (The asset "application.css" is not present in the asset pipeline.

我在堆栈溢出的另一篇文章中尝试了这些步骤:

好的,第一件事。

您是否在

config.serve_static_files = true
文件夹下的
production.rb
文件中设置了
config/environment

由于我们在 NGINX 后面运行,在我们的例子中它看起来像

config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?

第二件事。在上传到服务器之前你做了

rails assets:precompile
吗?

第三件事是。您是否尝试过调用您的文件

application.css.scss
,并重做
rails assets:precompile

最后一点,也是最重要的一点。您的

application.scss
文件是什么样的?

您是否删除了所有这些 *= 并使用 @import 代替 Bootstrap

文档中对此进行了很好的描述:

在 app/assets/stylesheets/application.scss 中导入 Bootstrap 样式:

// 自定义引导变量必须在引导之前设置或导入。 @导入“引导程序”;

然后它说:

确保文件具有 .scss 扩展名(或 .sass 表示 Sass 语法)。如果您刚刚生成了一个新的 Rails 应用程序,它可能会附带一个 .css 文件。如果这个文件存在,它将代替 Sass 被提供,所以重命名它:

$ mv app/assets/stylesheets/application.css app/assets/stylesheets/application.scss 然后,从 Sass 文件中删除所有 *= require 和 *= require_tree 语句。相反,使用 @import 导入 Sass 文件。

不要在 Sass 中使用 *= require ,否则你的其他样式表将无法访问 Bootstrap mixin 和变量。

但是这些都不起作用...我尝试了 ChatGPT 但老实说它主要告诉我同样的事情...我错过了一些东西,真的不知道是什么...

我不确定这是否正确,但

//= link application.scss
不在我的
manifest.js
文件中,而在我的
application.html.erb
中我有
<%= stylesheet_link_tag "application", "data-turbo-track": "reload" %>
。老实说,我不确定我哪里错了。我像这样初始化了 Rails 应用程序
rails new <name> --css=bootstrap --database=postgres
。后来我改变了我的SCSS文件。因为我认为 bootstrap 标志引起了骚动,所以我最终使用了 boostrap gem 并在我的
application.scss
中导入了 bootstrap。现在我尝试在heroku上部署并且发生了这种情况。另外,我还有一堆正在寻找
appliaction.bootstrap.scss
的脚本,但后来找不到里面的导入。我尝试删除它,并意识到我正在从 gem 和
@import 'bootstrap';
获取引导程序。我意识到我不需要该文件,也不需要脚本,这让我在这个错误消息游戏中继续前进。我觉得我几乎尝试了所有方法,有人知道如何提供帮助吗?

还有一件事。推送到 Heroku 成功。构建也成功了。只有当我真正进入该页面时,它才会中断......同样的事情也发生在

image_tag
助手上。通过添加扩展名
my_picture.png
而不仅仅是
my_picture
来解决这个问题。也许我愚蠢地尝试了
<%= stylesheet_link_tag "application.scss", "data-turbo-track": "reload" %>
,但这使它寻找
application.scss.css
,我无法使用它,因为它不是scss...

ruby-on-rails twitter-bootstrap heroku sass
1个回答
0
投票

所以问题出在

manifest.js
文件中。通往
application.scss
的路径是错误的。但我添加了
//= link_tree ../stylesheets
并且有效。我还将其添加到我的
assets.rb
文件中。

Rails.application.config.assets.paths << Rails.root.join('assets')
Rails.application.config.assets.paths << Rails.root.join('app/assets')
Rails.application.config.assets.paths << Rails.root.join('../assets')

并将其添加到我的

production.rb
文件中。

config.public_file_server.enabled = true
config.assets.css_compressor = :sass
config.assets.compile = true

这样就完成了!

© www.soinside.com 2019 - 2024. All rights reserved.