Webpacker ::清单:: MissingEntryError

时间:2018-10-04 04:53:52

标签: ruby-on-rails reactjs webpack

我已经使用rails new和--webpack = react启动了Rails项目。我生成了一个新的控制器,更新了database.yml中的postgresql密码。到目前为止,一切正常。在这一点上,我要做的就是获取反应以渲染默认的hello_react.jsx文件,该文件由rails作为示例生成。当我在视图中放入<%= javascript_pack_tag'hello_react'%>并运行服务器时,出现以下错误。

  

Home#index中的Webpacker :: Manifest :: MissingEntryError显示   G:/../../../ myGroceryList / app / views / home / index.html.erb,其中第1行   提出:

     

Webpacker在以下位置找不到hello_react.js   G:/../../../ myGroceryList / public / packs / manifest.json。可能的原因:

     

您想将webpacker.yml的compile值设置为true   环境,除非您使用webpack -w或   webpack-dev-server。 webpack尚未重新运行以反映更新。您   Webpacker的config / webpacker.yml文件配置错误。您的Webpack   配置未创建清单。您的清单包含:{}

我已对project up to github.出了问题的任何想法?

已解决:评论中的问题

5 个答案:

答案 0 :(得分:1)

这是您的项目,做了一些小的更改,在这里我正在使用sqlite3 db,并且正在使用ruby 2.5.1,并且执行了以下标准命令:

bundle install

如果一切顺利,您应该会看到所需的页面,没问题:

然后只使用rails s

这是项目:https://github.com/nezirz/groceryList

enter image description here

如果网站未显示,还请检查控制台中是否还有其他错误。

答案 1 :(得分:0)

如果您遇到此问题,可能值得查看This WebPacker GitHub Issue

答案 2 :(得分:0)

Jonny B

我遇到了同样的问题。我能够确定需要在我的webpacker.yml中添加'.jsx'。

   extensions:
     - .js
+    - .jsx
     - .sass
     - .scss
     - .css

我还发现webpacker不在页面刷新或文件更改时运行。每次更改后,我需要运行bundle exec rake assets:precompile(或bundle exec rake webpacker:compile)才能重新加载并查看更改。

我正在通过Apache + Mod_Passenger运行该应用程序,而不是使用rails s(我正在开发的应用程序太多,无法继续在命令行上启动和停止服务器)。似乎这与Webpacker的按需编译功能不太兼容。使用rails s启动服务器将使我可以在localhost:3000上运行该应用程序,但是react应用程序无法正确呈现。 在3000上通过Puma服务器访问该页面之后,现在我可以看到已编译的资产在我的Apache / Passenger实例中运行。因此,按映射的编译似乎仅在在命令行(rails s)上启动的服务器中运行时才能正常工作……这无法正确呈现。 :-/

另一个选择(比运行2个服务器更好)是每当进行更改时,使用bundle exec rake assets:precompilebundle exec rake webpacker:compile在命令行上进行编译。仍然是PITA,但至少现在可以使用。如果我资助了更好的解决方案,我将更新答案。

更新

经过一遍 的测试,安装了不同版本的NodeJS,Ruby,rbenv,nvm等,我可以确定未设置NODE_ENV Apache / Passenger环境。使用Rbenv,我可以在我的应用程序根目录中添加一个.rbenv-vars文件,

NODE_ENV=development
RACK_ENV=development
RAILS_ENV=development

现在,webpacker(和NodeJS)看到我正在开发中而不是在生产中运行,并且按需编译正在运行。

答案 3 :(得分:0)

在打开了.css的内部Rails项目中,添加了.jsx(实际上是来自该SO线程的所有内容),我们发现,没有名为frontend/packs/feedback.js的文件,我们永远不会得到{ {1}}。一个简单的解决方案是使用类似import语句重新创建文件。

feedback.css

对于带有Rails 5.2.0的webpacker来说,也许有一个更优雅的解决方案,但是我不能说拥有一个文件使我非常在意。

答案 4 :(得分:0)

解决方案:最好的办法是,当您的public / packs文件夹缺少Manifest文件或全部丢失时,我会告诉您此错误。在我的情况下,Webpackers的编译步骤默默地失败了,并且没有创建public / packs文件夹。我为此检查了webpacker gem的修复程序。您可以看到此修复程序和对话here