Ruby on rails 在*Rails 6*应用程序的manifest.json中找不到Webpacker抛出application.css
目前,我们的应用程序使用Rails 6。它在生产中运行良好,但在开发模式中会出现一些错误。请帮助我Ruby on rails 在*Rails 6*应用程序的manifest.json中找不到Webpacker抛出application.css,ruby-on-rails,webpacker,ruby-on-rails-6,Ruby On Rails,Webpacker,Ruby On Rails 6,目前,我们的应用程序使用Rails 6。它在生产中运行良好,但在开发模式中会出现一些错误。请帮助我 这就是我的application.js和application.css的样子 packs/application.js require("@rails/ujs").start() require("turbolinks").start() require("@rails/activestorage").start() require("channels") require("jquery") i
这就是我的application.js和application.css的样子 packs/application.js
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("jquery")
import '../stylesheets/application'
import './bootstrap_custom.js'
import './side_menu.js.erb'
//import './sweetalert.js'
import './business_hours.js'
import './admin.js'
import './services.js'
import './user_service.js'
@import './bootstrap_custom.scss';
$fa-font-path: '~@fortawesome/fontawesome-free/webfonts';
@import '~@fortawesome/fontawesome-free/scss/fontawesome';
@import '~@fortawesome/fontawesome-free/scss/solid';
@import './admin_dashboard.scss';
@import './side_menu.css';
@import './fonts.scss';
@import './login.css';
Packs/stylesheets/application.scss
require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
require("jquery")
import '../stylesheets/application'
import './bootstrap_custom.js'
import './side_menu.js.erb'
//import './sweetalert.js'
import './business_hours.js'
import './admin.js'
import './services.js'
import './user_service.js'
@import './bootstrap_custom.scss';
$fa-font-path: '~@fortawesome/fontawesome-free/webfonts';
@import '~@fortawesome/fontawesome-free/scss/fontawesome';
@import '~@fortawesome/fontawesome-free/scss/solid';
@import './admin_dashboard.scss';
@import './side_menu.css';
@import './fonts.scss';
@import './login.css';
我认为您应该只使用一个点导入
'./stylesheets/application'
,因为样式表目录与application.js处于同一级别
另外,我认为建议只在pack目录中包含pack,其余的将在它之前一个级别,如下所示:
app/javascript
├── stylesheets
| └── application.css
├── channels
└── packs
└── application.js
如果您这样做了,您应该再次使用两个点“../stylesheets/application”
并确保在webpacker.yml
中配置webpacker以提取CSS:
extract_css: true
经过长期的斗争,我找到了解决办法。谢谢@ahmed kamal 多个名称相同但扩展名不同的包 即:application.scss和application.js只有最后一个才能进入网页输入路径配置 解决方案:
1. Rename stylesheets/application.scss into stylesheets/style.scss
2. Import style.scss in application.js like this import '../stylesheets/style'
3. config/webpacker.yml make below changes
compile: true
cache_manifest: true
extract_css: true
如果此解决方案不适用于您,请尝试
rake assets:precompile
这一切对我来说都很好检查目录名,确保它们与Webpacker的输出不冲突。在我的例子中,Rails无法找到
application.css
,即使Webpacker已经成功编译了它
// Webpacker log output
Asset Size Chunks Chunk Names
application.js 3.62 MiB application [emitted] application
css/application-631a168a.css 332 KiB application [emitted] [immutable] application
我的相关目录结构:
app/javascript
|——packs
| └——application.js
└——src
└——assets
|——css
└——scss
└——application.scss
在我的例子中,问题是我已经有一个名为css
的目录,所以当Rails查找编译后的css/application.css
时,它转到这个目录,而不是Webpacker生成的目录,并且无法找到application.css
删除冲突目录修复了它:
$ rm -rf app/javascript/src/css // change path appropriately
根据,官方修订为:
$ touch rebloom/app/javascript/packs/application.css
extract\u css:false
更改为extract\u css:true
$ ruby -pi -e "sub(/extract_css: false/, 'extract_css: true')" config/webpacker.yml
$ bundle exec rake assets:precompile
仍然面临同样的问题。请给我一些替代解决方案。确保它重新编译了包,尝试重新启动您的开发服务器是的,我重新启动了服务器。我在本地机器中遇到了这个问题,您是否配置了webpacker来提取CSS?,
extract\u CSS:true
在webpacker.yml
application.js和application.CSS中不是名称冲突,并且cache\u manifest:true
不是修复的一部分。