Rails 6 的资产管道中不存在资产“application.js”

Posted

技术标签:

【中文标题】Rails 6 的资产管道中不存在资产“application.js”【英文标题】:The asset "application.js" is not present in the asset pipeline in Rails 6 【发布时间】:2019-09-18 15:23:03 【问题描述】:

我正在创建一个 RoR-6 应用程序,我从 application.html.erb 文件的这一行中得到以下错误:

javascript_include_tag 'application', 'data-turbolinks-track': 'reload'

我收到以下错误:

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

应用是通过运行rails new myapp -d postgres创建的

我正在使用 rails 6.0.0.rc1

【问题讨论】:

【参考方案1】:

将此行放在application.html.erb

<%= javascript_pack_tag 'application' %>

这对我有用。

【讨论】:

【参考方案2】:

如果你想使用Webpack,请将以下内容添加到config/initializers/assets.rb

Rails.application.config.assets.precompile += %w(application.js)

【讨论】:

【参考方案3】:

您需要使用javascript_pack_tag 而不是javascript_include_tag

javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'

这是必需的,因为 webpacker 在 Rails 6 中处理 javascript 编译。

【讨论】:

谢谢。这解决了问题。感谢您的快速回复。 值得注意的是,说 webpacker 在 Rails 6.0.0 中处理资产编译是不正确的 - webpacker 默认只处理 javascript 编译。 Rails Asset Pipeline 和 Sprockets 仍然用于 CSS、图像和其他资产类型。 在生产和使用 javascript_pack_tag 时遇到同样的问题,知道为什么吗?

以上是关于Rails 6 的资产管道中不存在资产“application.js”的主要内容,如果未能解决你的问题,请参考以下文章

资产管道中不存在资产“logo.png”

Rails:application.css 不在资产管道中

开发中的 rails 3.1 资产管道 css 缓存

Rails 3:资产管道+许多布局

Rails 3.1 资产管道供应商/资产文件夹组织

Rails 5 - 如何在资产管道中包含所有供应商资产?