我已经使用rails new
和--webpack=react
启动了一个rails项目。
我在Database. yml中生成了一个新控制器更新了我的PostgreSQL密码。
到目前为止,一切正常。在这一点上,我所要做的就是让react呈现默认的hello_react. jsx文件,该文件是由rails作为示例生成的。
当我把
Webpacker::清单::MissingEntryError in Home#index显示G:/…/…/…/myGroceryList/app/view/home/index. html.erb其中第1行引发:
Webpacker在G:/…/…/…/myGroceryList/public/packs/清单. json中找不到hello_react.js。可能的原因:
除非您使用webpack-w或webpack-dev-server,否则您希望为您的环境将compile的webpack. yml值设置为true。webpack尚未重新运行以反映更新。您错误配置了Webpacker的config/webpacker.yml文件。您的webpack配置没有创建清单。您的清单包含:{}
我已将项目推送到GitHub。有什么问题以及如何修复此错误的想法吗?
已解决:评论中的决议
强尼·B
我遇到了同样的问题。我能够确定我需要将“. jsx”添加到我的webpacker.yml
。
extensions:
- .js
+ - .jsx
- .sass
- .scss
- .css
我还发现webpacker: compile
在页面刷新或文件更改时没有运行。我需要在每次更改后手动运行bundle exec rake资产:precompile
(或bundle exec rake webpacker:compile
)才能重新加载并查看更改。
我通过ApacheMod_Passenger运行应用程序,而不是使用rails s
(我同时开发了太多的应用程序,无法在命令行上继续启动和停止服务器)。这似乎不适用于Webpacker的按需编译功能。使用rails s
启动服务器将允许我在localhost:3000
上点击应用程序,但react应用程序无法正确渲染。在3000上通过Puma服务器点击页面后,我现在可以看到编译后的资产在我的Apache/Passenger实例中工作。因此,按需编译似乎只有在命令行(rails s
)上启动的服务器中运行时才能正常工作…无法正确呈现。:-/
另一种选择(比运行2台服务器更好)是在命令行上使用bundle exec rake资产进行编译:precompile
或bundle exec rake webpacker:每当您进行更改时编译
。仍然是PITA,但至少它可以工作…目前。如果我找到更好的解决方案,我会更新答案。
经过多次尝试,安装不同版本的NodeJS、Ruby、rbenv、nvm等。,我能够确定NODE_ENV
没有为Apache/Passenger环境设置。使用Rbenv,我能够在我的应用根目录中添加一个. rbenv-vars
文件,其中包含:
NODE_ENV=development
RACK_ENV=development
RAILS_ENV=development
现在,Webpacker(和NodeJS)看到我在开发而不是生产环境中运行,并且按需编译正在工作。
解决方案:当您的public/packs文件夹缺少清单文件或全部丢失时,我可以告诉您此错误会触发。在我的情况下,发生的事情是Webpackers编译步骤默默地失败并且没有创建public/packs文件夹。我为此检查了webpacker gem的修复程序。您可以在此处看到该修复和对话。
如果这是根本原因,那么您可以根据您喜欢安装node包yarn install
或npm install
的方式修复其中任何一个