Rails: 在主页#index中出现Webpacker::Manifest::MissingEntryError错误

25

在主页#index中出现了Webpacker::Manifest::MissingEntryError错误 在显示/Users/khalidhosein/Desktop/myEPKmedia/builder/khalid101/app/views/layouts/embedded_app.html.erb文件时,第7行引发了该错误:

Webpacker can't find hello_react.js in /Users/khalidhosein/Desktop/myEPKmedia/builder/khalid101/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
   unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{
  "application.js": "/packs/application-68dcba18197451fbb79e.js",
  "application.js.map": "/packs/application-68dcba18197451fbb79e.js.map"
}
Extracted source (around line #7):
5
6
7
8
9
10

    <% application_name = ShopifyApp.configuration.application_name %>
    <title><%= application_name %></title>
    <%= javascript_pack_tag 'hello_react' %>
    <%= stylesheet_link_tag 'application' %>
    <%= javascript_include_tag 'application', "data-turbolinks-track" => true %>
    <%= csrf_meta_tags %>

Rails.root: /Users/khalidhosein/Desktop/myEPKmedia/builder/khalid101

Application Trace | Framework Trace | Full Trace
app/views/layouts/embedded_app.html.erb:7:in `_app_views_layouts_embedded_app_html_erb___4509380428416253144_70127991029820'
Request
Parameters:

None

我在尝试将我的Rails应用与React前端连接时遇到了这个错误。我已经尝试从各种来源进行研究和重新配置文件。我还重新创建了manifiest.json文件和packs库。我正在遵循这个教程:

https://github.com/natemacinnes/natemacinnes.github.io/blob/master/rails-5-shopify-app-setup.md

如果有任何想法,将不胜感激,因为目前没有太多关于连接Rails Shopify API和React的文档或教程。
我的代码如下——>https://github.com/KhalidH82/ShopifyApp-React-Rails

3
运行命令 bundle exec rake webpacker:compile,编译 Webpacker。 - Indra
如果您遇到与Node版本和Webpacker不兼容的问题,请使用此帖子中提到的命令。https://dev59.com/TlQJ5IYBdhLWcg3wT0LJ#70326851。我在很长时间后终于让这篇文章对我有用了。 - rahul garg
12个回答

37
虽然我没有使用React,但在新创建的Rails 6应用程序上遇到了相同的错误。重新安装Webpacker对我有用: 我猜可能是某些依赖项缺失或较旧版本中的错误(我注意到webpack-dev-server的版本已升级到3.8.1)。

好的,既然这是最受欢迎的答案并且准确无误,但缺少了一些明确性,我将提供更多的解释:基本上有6个不同的原因导致这种情况发生,其中几乎所有原因都是由于您没有使用yarn installnode install安装Node模块。许多设置工具,如安装程序,会作为副产品运行它们,这就是为什么许多人看到了看起来像是相同根本问题的不同解决方案。我在webpacker中提交了一个PR以扩展错误消息(现在有6个原因!)基于这个SO帖子,但现在Webpacker已经死了。长命webpacker! - Jason FB
在使用Webpacker与VueJS时,我需要执行bundle exec rake webpacker:install:vue - Constantin De La Roche

22

当我尝试在Ubuntu 20.04上设置一个新的Rails 6应用程序时,遇到了同样的挑战。

当我启动Rails服务器并在浏览器中打开时,出现错误:

Webpacker::Manifest::MissingEntryError in Books#index
Showing /home/promisepreston/dynamic_authorization/app/views/layouts/application.html.erb where line #9 raised:

Webpacker can't find application in /home/promisepreston/dynamic_authorization/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
   unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.
Your manifest contains:
{

这是我解决问题的方法:
问题出在我没有在Rails 6应用程序中设置webpacker. 从Rails 6开始,webpacker是默认的JavaScript编译器。这意味着所有的JavaScript代码都将由webpacker处理,而不是旧的资源管道aka sprockets.
要在您的Rails 6应用程序中安装webpacker,只需运行以下命令:
bundle exec rails webpacker:install

或者

rails webpacker:install

这应该可以成功安装webpacker和它的所有依赖。

就是这样。

希望能对你有所帮助。


2
rails webpacker:install 对我有帮助,非常感谢。 - ffouquet42

9

可能你忘记安装npm install了。我遇到了与您所提到的完全相同的问题。只需在终端或Dockerfile中键入 npm install 即可。我希望这个问题能够解决。

$ npm install

8

如果您意外未安装webpacker,也可能会发生这种情况。如果您尝试使用不兼容的Node版本安装webpacker,也会发生这种情况。

yarn add @rails/webpacker

请注意,您将会收到以下提示:

% yarn add @rails/webpacker
yarn add v1.22.10
[1/4]   Resolving packages...
[2/4]   Fetching packages...
error @npmcli/fs@1.1.0: The engine "node" is incompatible with this module. Expected version "^12.13.0 || ^14.15.0 || >=16". Got "15.14.0"
error Found incompatible module.
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.

你会注意到,package.json文件不会发生任何更改。

因为此检查现在(在yarn install时)运行,而不是在运行时运行,因此很容易忽略这一点。

如果你没有注意到yarn add给你提供了这个错误,你会认为webpacker已经安装到了你的package.json中,但实际上并没有。

切换到兼容的节点版本并重新运行安装程序可以解决问题。正如它所说,你需要一个节点版本是 ^12.13.0 || ^14.15.0 || >=16


这正是我的问题,谢谢!我不知道我应该如何知道我的Node版本已经过时。实际上,我对于看到的各种解决方案感到相当惊讶。 - Eduardo06sp
1
@Eduardo06sp -- 我也这么想,所以我决定在这里修复错误消息:https://github.com/rails/webpacker/pull/3232。看起来 webpacker 团队会接受我的 PR(也许?) - Jason FB
在进行此步骤之前,是否有必要删除 yarn.lock 文件? - J.R. Bob Dobbs
@J.R.BobDobbs -- 在这个步骤中,绝对不要删除锁定文件-- 它确定了通过NPM加载的所有JS版本,并且您不希望随意更改它。Webpacker :: Manifest :: MissingEntryError之所以会发生是因为Node或Yarn在开发过程中没有实际或正确地将软件包安装到/node_modules中。在生产/部署中,管道会构建您的节点模块,但它必须构建与yarn.lock中相同的确切版本,这就是为什么您使用锁定文件来指示节点包的版本的原因。 - Jason FB
谢谢。你的解决方案已经解决了我的问题。 - Nishat Anjum Lea

2

我曾经被这个错误困扰了很长时间,但以上的解决方案都没有对我起作用(尝试它们,它们在95%的情况下可以解决问题)。

对我而言,解决方法是我的 Node 版本太新了,我必须将其降级!

我使用的版本是:rails Rails 6.0.4.1 和 node 16.9.1。

我“降级”了 node 到 12.13.0,这是一个稳定的版本。现在它完美地工作了。

要“降级” node,我遵循了这个线程:如何降级 Node 版本


目前你的回答不够清晰,请编辑并添加更多细节以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community
哦。我的。天啊。我已经在这上面耗费了2个小时,终于找到一个可行的解决方案。我知道这种评论通常不被赞同,但是谢谢谢谢谢谢你。 - Cruncher
对于刚接触 Node 的 Rails 开发者来说,奇数版本的 Node 不稳定,而偶数版本的 Node 是“稳定版”。目前,Node 12 和 14 处于“维护”模式,但对于我们的 Rails 开发者来说,现在使用 Node 14 更好。 (2021 年 12 月)。在与 Node 16 的互操作性问题得到解决之前,这需要一些时间。请考虑到 Node 团队领先于我们其他人的采用,这是有道理的。我建议使用最新的 14.x 版本。 - Jason FB

2

2

在尝试了多种不同的解决方法之后,这个方法终于奏效了!

  1. yarn config set registry https://registry.npmjs.org
  2. rm yarn.lock
  3. yarn

然后重新安装webpack:

  1. bundle exec rails webpacker:install

Github问题


1
这是我在Ubuntu 20上解决Rails 7错误的方法:
  • 安装Webpacker:bundle exec rake webpacker:install

  • 然后运行bundle exec rails assets:precompile

`

`

这个解决方案对我有用。感谢 @dennis-kamau。在预编译期间它一直失败,我从这里找到了关于opnessl的解决方案 - https://dev59.com/0VEG5IYBdhLWcg3wPXtF - AMIC MING

0
sudo bundle exec rails webpacker:install:react

使用VueJS:bundle exec rake webpacker:install:vue - Constantin De La Roche

0

突然间,我的并行测试在许多功能规范中失败了。超过30%的规范失败了。在所有日志中,我都看到了这些字符串:Rails: Webpacker::Manifest::MissingEntryError。多次重启没有效果。

然后我运行了:

rm -rf public/packs-test
RAILS_ENV=test bundle exec rails webpacker:compile

修复完成!所有规格都变成绿色了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接