Closed. This question needs debugging details。它当前不接受答案。












想改善这个问题吗?更新问题,以使为on-topic

去年关闭。



Improve this question





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


显示在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.关于发生了什么问题的任何想法?

解决:评论中的解决方案

最佳答案

Jonny B

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

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


我还发现webpacker:compile不在页面刷新或更改文件时运行。我需要在每次更改后手动运行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等,我可以确定未为Apache / Passenger环境设置NODE_ENV。使用Rbenv,我能够在我的应用程序根目录中添加一个.rbenv-vars文件,其中包含:

NODE_ENV=development
RACK_ENV=development
RAILS_ENV=development


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

09-25 17:38