我知道这是一个老问题,但没有答案是解决我的问题。
我是Ruby on Rails的新手,刚刚用PostgreSQL数据库创建了一个项目,只是为了能够将项目上传到Heroku。
当我启动rails服务器时,我收到错误“application.css不在资产管道中”。
我使用的是bootstrap 4 gem,这需要您将applications.css重命名为application.scss。
我不知道出了什么事。
我真的尝试了stackoverflow上的每一个答案,都没有成功:(
请帮帮我,我做错了什么?
这是我得到的错误:
5条答案
按热度按时间5cnsuln71#
好吧,第一件事。
您是否在
config/environment
文件夹下的production.rb
文件中设置了config.serve_static_files = true
。由于我们在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之前 * 设置或导入。@import“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混合和变量。
了解更多here
tvokkenx2#
原始答案
在我例子中,我忘记在服务器中安装yarn命令。
因此,请在运行rails服务器之前安装
yarn
。否则assets:precompile
将不执行任何操作,也不会发出任何警告。更新
同时,确保所有这些事情:
1.文件存在:
app/assets/stylesheets/application.css
1.其内容如下所示:
1.还检查文件
app/assets/config/manifest.js
,pod7payv3#
为了使mutantkeyboard's answer更加清晰
我在将Rails应用程序部署为Docker映像时遇到了这个问题,该映像将在没有Nginx这样的Web服务器的Docker容器中运行。
此问题主要是在生产中,当您不想使用Nginx或Apache等Web服务器提供
/public
文件夹中的静态文件时引起的。要从
/public
文件夹提供静态文件,而不使用Web服务器(如Nginx或Apache),请执行以下操作:确保使用以下工具预编译资源:
或
这会将您的资源编译到
/public
文件夹中接下来,在
config/environments/production.rb
文件中添加以下内容:而不是这个:
请使用此选项:
这允许rails代替web服务器提供静态文件
at0kjp5o4#
只需重新安装yarn并预编译我们的资产:
yarn的parkages不能在github上运行...要解决这个问题,请重新安装yarn:
和预编译资产:
sbdsn5lh5#
Rails 7.0.4 ruby 3.1.2我解决了
yarn build
在缺少application.js时的问题,但在缺少application.css的情况下,yarn build:css
只是执行了此操作