为啥 Rails 无法启动并显示“预期在 `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError) 中找到清单
Posted
技术标签:
【中文标题】为啥 Rails 无法启动并显示“预期在 `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError) 中找到清单文件”?【英文标题】:Why does Rails fails to boot with "Expected to find a manifest file in `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError)"?为什么 Rails 无法启动并显示“预期在 `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError) 中找到清单文件”? 【发布时间】:2020-02-08 21:13:24 【问题描述】:bundle update
之后我的 Rails 应用无法启动:
Expected to find a manifest file in `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError)
【问题讨论】:
【参考方案1】:最近发布了一个新的 sprockets 主要版本,它与以前的版本不兼容。
在 Gemfile 中执行 steps needed to upgrade 或 pin 到 3.x 版
gem 'sprockets', '~>3.0'
【讨论】:
【参考方案2】:他们用最新版本的 sprockets 改变了一切。出现此错误是因为您没有创建 manifest.js
。您需要创建一个,并添加几行以确保一切正常。在旧版本的 sprockets 中,他们对 sprockets 处理哪些资产(即捆绑和连接)做了很大的假设。不再。现在您必须明确告诉 sprockets 您想要处理哪些文件:您可以在 manifest.js 文件中执行此操作。
解决问题的简单步骤:
创建 manifest.js 文件
$ mkdir -p 应用程序/资产/配置
$ touch app/assets/config/manifest.js (不是根 rails 目录)
然后复制并粘贴以下内容到您刚刚创建的 manifest.js 文件中:
//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
如果您的 app/config/environments/projection.rb
文件夹中有一个预编译数组(请参阅下面的示例),那么如果上面尚未访问它们,您或许应该将它们移至您的 manifest.js
。
config.assets.precompile = ["admin.js", "admin.css"]
最后,如果您使用的是 webpacker,您可能需要决定资产管道处理的内容以及 webpacker 处理的内容。即根据您自己的特定用例删除 javascripts 文件的链接目录。
Source: Thanks to Richard Schneeman's blog - see here for more information..
【讨论】:
即使我有它仍然显示的文件,预计会在app/assets/config/manifest.js
中找到一个清单文件
谢谢你这对我有用,谢谢你。
@ChrisHabgood 不知道 - 但随时编辑答案【参考方案3】:
正如链接http://www.redmine.org/boards/2/topics/58169 所建议的,这是一个已知问题。请参阅 #32223 和 sprockets 4.0.0 使用 Ruby
我刚刚用 redmine 3.4.4 重现了这个问题,但发现 redmine 3.4.12 一切正常。
wgethttp://www.redmine.org/releases/redmine-3.4.12.tar.gz
【讨论】:
【参考方案4】:根据answer here,您可以通过以下方式解决此问题:
mkdir -p app/assets/config && echo '' > app/assets/config/manifest.js
如果您需要更多详细信息,the answer in this thread 会很有帮助地指向Guide to upgrading from Sprockets 3.x to 4.x
【讨论】:
以上是关于为啥 Rails 无法启动并显示“预期在 `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError) 中找到清单的主要内容,如果未能解决你的问题,请参考以下文章
为啥 datepicker 没有以 Rails 3 形式显示
为啥 Rails 无法识别请求标头中的 `Accept: application/json`?
AWS Elastic Beanstalk 上的 Rails 应用程序返回 422 并显示“无法验证 csrf 令牌”