我使用rails new和--webpack=react启动了一个rails项目。
我在PostgreSQL中生成了一个新的控制器,更新了我的database.yml密码。
到目前为止,一切都很好。此时,我所要做的就是对rails作为示例生成的默认hello_react.jsx文件的呈现做出反应。
当我将<%= javascript_pack_tag 'hello_react' %>放在我的视图中并运行服务器时,我会得到以下错误:
Webpacker::清单::MissingEntryError在G:/../../../myGroceryList/app/views/home/index.html.erb中显示了第1行所在的Home#index: Webpacker在G:/../../../myGroceryList/public/packs/manifest.json.中找不到hello_react.js可能的原因: 对于您的环境,您希望将编译的webpacker.yml值设置为true,除非您正在使用webpack -w或webpack-dev服务器。webpack还没有重新运行以反映最新情况。您错误地配置了Webpacker的config/webpacker.yml文件。您的webpack配置没有创建清单。您的清单包含:{}
我已经向项目达到GitHub。提出了任何关于哪里出了问题以及如何纠正这个错误的想法?
已解决:决议载于评论
发布于 2019-02-27 16:06:04
解决方案:当您的公共/packs文件夹丢失了Manifest文件或全部丢失时,我最多能告诉您这个错误。在我的例子中所发生的事情是Webpackers编译步骤悄无声息地失败了,没有创建public/packs文件夹。为此,我为webpacker签了一个补丁。您可以看到修复和会话这里。
如果这是根本原因,那么根据您喜欢如何安装节点包( yarn install或npm install ),可以对其中任何一个进行修复。
发布于 2019-01-09 07:58:09
琼尼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/客运实例中运行的已编译资产。因此,只有在命令行(rails s) ...which上启动的服务器无法正确呈现时,按需编译才能正常工作。*-/
另一种选择(比运行2台服务器更好)是在命令行上使用bundle exec rake assets:precompile或bundle exec rake webpacker:compile进行编译。仍然是一个皮塔,但至少它现在工作的...for。如果我找到更好的解决方案,我会更新答案。
更新
经过大量的尝试,安装了不同版本的NodeJS、rbenv、nvm等等,我能够确定NODE_ENV不是为Apache/客运环境设置的。使用Rbenv,我能够在我的应用程序根目录中添加一个.rbenv-vars文件,其中包含:
NODE_ENV=development
RACK_ENV=development
RAILS_ENV=development现在,Webpacker (和NodeJS)看到我是在开发中运行,而不是在生产中运行,而且按需编译正在工作。
https://stackoverflow.com/questions/52639256
复制相似问题