为啥 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 形式显示

话语服务器无法启动与redis相关的错误

为啥 Rails 无法识别请求标头中的 `Accept: application/json`?

AWS Elastic Beanstalk 上的 Rails 应用程序返回 422 并显示“无法验证 csrf 令牌”

android studio项目启动画面无法正常关闭,应用程序运行完美但退出应用程序启动画面显示后,为啥[关闭]

为啥 Rails 会在页面上显示所有信息? [复制]