在 Rails 中使用 Webpacker 应用程序,编译后的样式似乎加载正常 (200),但未应用

In Rails with Webpacker app, compiled styles appear to load ok (200), but aren't applied

将现有的 React 项目从 Rails 4 升级到 5.1 并使用新的 Webpacker pack_tag 系统加载资产。事情似乎编译正确,我有一个包文件 packs/mutts.jsx 并且在我的 index.html.erb 中我引用

<%= javascript_pack_tag 'mutts' %> <%= stylesheet_pack_tag 'mutts' %>

当服务器运行时,这会导致编译为 app/public/packs/ 的 4 个文件:一个 .js.js.map.css.css.map - 都包含[packname]-[hash].extension format.

当我检查从 pack_tag 生成的 html 时,我可以看到它们每个 link 到相应的 js 和 css 文件,具有正确的散列在文件名中。并查看 devtools 中的网络选项卡,两个文件都成功加载了 200.

但是当我查看 Sources 选项卡时,我看到 localhost:3000 有一个 packs/ 目录,其中只包含 js 文件,而 css 无处可寻,并且样式绝对没有应用于页面。

我是不是得到了文件结构或导入错误还是什么?似乎不是 webpack 配置问题,因为编译文件的内容看起来是正确的。

问题出在我放置 stylesheet_pack_tag 的位置。将其放入 <head> 后,它起作用了。

应该已经抓住了这一点 - Webpacker 的大多数演示都将标签与相关 javascript_pack_tag 放在一起,但在我的例子中,我正在为每个页面呈现一个新的 JS 根目录,所以 js 包是由不是根 application.html.erb

的 rails 视图呈现

我看过一些似乎适用于 "keep assets in proximity of concerned code" 的 webpacker 示例,但我很高兴在这里只考虑全局样式。