我已经使用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.出了问题的任何想法?
已解决:评论中的问题
答案 0 :(得分:1)
这是您的项目,做了一些小的更改,在这里我正在使用sqlite3 db,并且正在使用ruby 2.5.1,并且执行了以下标准命令:
bundle install
如果一切顺利,您应该会看到所需的页面,没问题:
然后只使用rails s
这是项目:https://github.com/nezirz/groceryList
如果网站未显示,还请检查控制台中是否还有其他错误。
答案 1 :(得分:0)
如果您遇到此问题,可能值得查看This WebPacker GitHub Issue
答案 2 :(得分:0)
我遇到了同样的问题。我能够确定需要在我的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:precompile
或bundle 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。