ruby-on-rails 为什么Rails Boot 失败并显示“预期在'app/assets/config/manifest.js'(链轮::Rails::ManifestNeededError)中找到清单文件"?

anhgbhbe  于 2022-11-26  发布在  Ruby
关注(0)|答案(4)|浏览(150)

bundle update之后,我的Rails应用程序无法 Boot ,原因如下:

Expected to find a manifest file in `app/assets/config/manifest.js` (Sprockets::Railtie::ManifestNeededError)
mec1mxoz

mec1mxoz1#

发生了什么?

看起来您已经升级了链轮。链轮的较新版本需要一个称为manifest.js的文件。您没有。您需要创建一个,并添加一些“指令”。

为什么需要这样做?

在旧版本的链轮中,对要捆绑/连接的资产做了很大的假设**-顺便说一句,链轮就是这样做的。
“请给我链轮”

  • 将文件夹abc中的所有内容捆绑在一起
  • bundle AND连接文件夹xyz中的所有内容
  • 保持admin.js分离。

解决问题的简单步骤:

1.创建清单.js文件

$ mkdir -p app/assets/config 
$ touch app/assets/config/manifest.js
 (not the root rails directory)

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

//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css

什么是“指令”?

那些常见的东西//=被称为“指令”。
如果你还没有这样做,请查看sprockets文档,这样你就不会再保存自己头疼了。下面是一个小例子:
让我们翻译一下//= link_directory ../javascripts .js指令:
“获取javascript目录中的每个js文件,将它们连接起来,并将它们作为单独的javascript文件保存,即不绑定。”如果需要绑定,请使用不同的指令。

设置布局模板

您还应该有一个javascript_include_tag,它通常放在您的application.html.erb文件中。如果您有其他单独捆绑的js文件,不要忘记将它们添加到application.html.erb中,例如:

<%= javascript_include_tag "application", "addOtherFiles", "here", "etc", "data-turbo-track": "reload", defer: true %>

1.如果您在app/config/environments/production.rb文件夹中有一个预编译数组(参见下面的示例),那么如果您在上面还没有访问它们,也许您应该将它们移到您的manifest.js中。
配置资产。预编译= [“admin.js”,“admin.css”]
想必你会希望你的admin.js javascript文件与你的application.js文件分开。没问题,只要告诉链轮保持它们分开:

//= link_tree ../images
//= link_directory ../javascripts .js
//= link_directory ../stylesheets .css
//= link "admin.js"

1.最后,如果您正在使用webpacker,您可能希望决定您希望资产管道处理什么,以及您希望webpacker处理什么。即,根据您自己的特定用例删除指向javascript文件的link_directory。
参考:请阅读此处以了解有关以下内容的详细信息:清单. js文件
Source: Thanks to Richard Schneeman's blog - see here for more information..

脚注和入门

***连接?通常JavaScript有很多白色。为了加快速度,你可以转换你的JS代码,使它没有空格,这样它就可以快速上传--这就是连接。
bundling?不再像以前那么重要了,但是您可以将多个JS文件合并成一个文件,然后将其发送到浏览器)。最新的更改是朝着正确方向迈出的一步:现在你必须明确地告诉链轮
,你想要捆绑和/或连接什么文件:这是在manifest. js文件中完成的,例如:
**编辑:**如果内容令人困惑/不清楚:大声抱怨!2如果你保持沉默,我怎么能修好呢?3每个人都从这些改进中受益。

avwztpqn

avwztpqn2#

最近发布了一个新的主要版本的链轮,它与以前的版本不兼容。
执行升级所需的步骤或在Gemfile中固定到版本3.x

gem 'sprockets', '~>3.0'
m4pnthwp

m4pnthwp3#

根据此处的答案,您可以使用以下方法解决此问题:

mkdir -p app/assets/config && echo '{}' > app/assets/config/manifest.js

如果您需要更多详细信息,the answer in this thread将帮助您参考从链轮3.x升级到4.x的指南

7cjasjjr

7cjasjjr4#

如链接http://www.redmine.org/boards/2/topics/58169所示,这是一个已知问题。请参见#32223,链轮4.0.0会破坏Redmine 3.4.11,Ruby〈2.5.0。
我只是用Redmine 3.4.4重现了这个问题,但发现Redmine 3.4.12一切正常。
工作取得http://www.redmine.org/releases/redmine-3.4.12.tar.gz

相关问题