【问题标题】: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)

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-5


    【解决方案1】:

    最近发布了一个新的 sprockets 主要版本,它与以前的版本不兼容。

    在 Gemfile 中执行 steps needed to upgrade 或 pin 到 3.x 版

    gem 'sprockets', '~>3.0'
    

    【讨论】:

      【解决方案2】:

      他们用最新版本的 sprockets 改变了一切。出现此错误是因为您没有创建 manifest.js。您需要创建一个,并添加几行以确保一切正常。在旧版本的 sprockets 中,他们对 sprockets 处理哪些资产(即捆绑和连接)做了很大的假设。不再。现在您必须明确告诉 sprockets 您想要处理哪些文件:您可以在 manifest.js 文件中执行此操作。

      解决问题的简单步骤:

      1. 创建 manifest.js 文件

        $ mkdir -p 应用程序/资产/配置

        $ touch app/assets/config/manifest.js (不是根 rails 目录)

      2. 然后复制并粘贴以下内容到您刚刚创建的 manifest.js 文件中:

        //= link_tree ../images
        //= link_directory ../javascripts .js
        //= link_directory ../stylesheets .css
        
      3. 如果您的 app/config/environments/projection.rb 文件夹中有一个预编译数组(请参阅下面的示例),那么如果上面尚未访问它们,您或许应该将它们移至您的 manifest.js

        config.assets.precompile = ["admin.js", "admin.css"]

      4. 最后,如果您使用的是 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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-12-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-02
          • 2023-03-28
          相关资源
          最近更新 更多