从 Rails 6 中删除 Webpacker现在资产编译不起作用

问题描述

ruby '3.0.1' 'rails','~> 6.1.2'

我正在从 rails 项目中删除 Webpacker。我假设它最初是使用 rails new 和 webpacker 标志创建的,但我不确定。到目前为止,我所做的只是删除了 yarn、browsify、babel 等源文件,然后将我所有的 javascript 和样式表移至 app/assetsapp/vendor

我还将此添加application.html.erb

    <%= stylesheet_link_tag "application",media: "all","data-turbolinks-track" => "reload" %>
    <%= javascript_include_tag "application","data-turbolinks-track" => "reload" %>

有一段时间,一切正常。我正在更正路径、修复小错误等。然后在我重新启动服务器一次后,出现了一个错误,现在我卡住了。

Sprockets::Rails::Helper::AssetNotprecompiled in Universes#index

Showing /var/app/app/views/layouts/application.html.erb where line #8 raised:

application.css

以下是我目前所知道的:

  • 我不使用 application.css。我有一个 app/assets/stylesheets/application.scss
  • 如果删除样式表 stylesheet_link_tag 调用application.js 会得到类似的调用
  • 我确定我已经安装了 sass-rails gem,所以它应该使用 application.scss。
  • 我以前从未使用过基础 Rails 资产管道。只有 webpacker 的做事方式。所以我可以假设缺少非常基本的东西。

任何帮助将不胜感激。谢谢。

解决方法

对于 application.scss,您应该确保您的 gemfile 中有 sass-rails gem。

除此之外,也许会有一些帮助:https://guides.rubyonrails.org/asset_pipeline.html#in-development

,

Lam Phan 有我需要的东西。我的 assets/config/manifest.js 配置不正确。我将其恢复为:

//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css

然后确保 application.scssapplication.js 在这些路径上。之后一切就轻松了。非常感谢您抽出宝贵时间。