Ruby on rails 在Rails中加载网页包javascript时使用EOFError

Ruby on rails 在Rails中加载网页包javascript时使用EOFError,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,我在Rails 6项目中有一个文件app/javascript/packs/application.js。当我加载站点的本地dev版本时,它会尝试通过http://localhost:4000/packs/js/application-ed3ae63cdf581cdb86b0.js(我在一个自定义端口上运行,以避免与另一个应用程序发生冲突),但js文件请求失败,错误为500: Puma caught this error: end of file reached (EOFError) /User

我在Rails 6项目中有一个文件
app/javascript/packs/application.js
。当我加载站点的本地dev版本时,它会尝试通过http://localhost:4000/packs/js/application-ed3ae63cdf581cdb86b0.js(我在一个自定义端口上运行,以避免与另一个应用程序发生冲突),但js文件请求失败,错误为500:

Puma caught this error: end of file reached (EOFError)
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/2.6.0/net/protocol.rb:225:in `rbuf_fill'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/2.6.0/net/protocol.rb:191:in `readuntil'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/2.6.0/net/protocol.rb:201:in `readline'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/2.6.0/net/http/response.rb:40:in `read_status_line'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/2.6.0/net/http/response.rb:29:in `read_new'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rack-proxy-0.6.5/lib/net_http_hacked.rb:53:in `begin_request_hacked'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rack-proxy-0.6.5/lib/rack/http_streaming_response.rb:60:in `response'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rack-proxy-0.6.5/lib/rack/http_streaming_response.rb:29:in `headers'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rack-proxy-0.6.5/lib/rack/proxy.rb:120:in `perform_request'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/webpacker-4.3.0/lib/webpacker/dev_server_proxy.rb:21:in `perform_request'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/rack-proxy-0.6.5/lib/rack/proxy.rb:57:in `call'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/railties-6.0.3.3/lib/rails/engine.rb:527:in `call'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/puma-4.3.6/lib/puma/configuration.rb:228:in `call'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/puma-4.3.6/lib/puma/server.rb:713:in `handle_request'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/puma-4.3.6/lib/puma/server.rb:472:in `process_client'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/puma-4.3.6/lib/puma/server.rb:328:in `block in run'
/Users/sam/.rbenv/versions/2.6.6/lib/ruby/gems/2.6.0/gems/puma-4.3.6/lib/puma/thread_pool.rb:134:in `block in spawn_thread'
此文件在本地不存在:

$ls public/packs/js/application-ed3ae63cdf581cdb86b0.js
ls:public/packs/js/application-ed3ae63cdf581cdb86b0.js:没有这样的文件或目录
但具有另一个指纹的版本会(且非空):

$ls-alh public/packs/js/application-*
-rw-r--r--1名sam员工188K 2月24日17:58 public/packs/js/application-fdef50bf044896f1dc71.js
-rw-r--r--1 sam staff 212K 24 Feb 17:58 public/packs/js/application-fdef50bf044896f1dc71.js.map
我无法让我的网站请求正确的文件。下面,我已经试过了

rake assets:clean
rake assets:precompile
touch tmp/restart.txt
但是没有用。我还尝试了一个私有浏览器窗口,清除浏览器缓存和其他浏览器

我使用的是
bin/server
而不是
bin/webpacker-dev-server
,并且没有更改我的
webpacker.yml
(它是在init上自动创建的,然后在我安装React时自动更新),但如果有帮助,它看起来是这样的:

#注意:要使更改生效,必须重新启动bin/webpack dev服务器
默认值:&默认值
源路径:app/javascript
来源\输入\路径:包
public\u root\u路径:public
公共\u输出\u路径:包
缓存路径:tmp/cache/webpacker
检查纱线的完整性:错误
网页包编译输出:true
#Web包应提供其他路径查找模块
#['app/assets'、'engine/foo/app/assets']
已解析的路径:[]
#在所有请求上重新加载manifest.json,以便重新加载最新编译的包
缓存清单:false
#提取并发出css文件
提取css:false
静态资源扩展:
-jpg先生
-.jpeg
-.png
-.gif
-蒂芙先生
-.ico
-.svg
-.eot
-.otf
-.ttf
-沃夫先生
-woff2先生
扩展:
-.jsx
-mjs先生
-.js
-萨斯先生
-.scss
-.css
-.module.sass
-.module.scss
-.module.css
-.png
-.svg
-.gif
-.jpeg
-jpg先生
发展:

看到您没有使用dev服务器,您会想到几件事,很可能在
public/packs
中有一个旧版本的资产


尝试删除packs文件夹并运行
bin/server

我在另一个场合遇到了此问题的变体(相同的错误,但正确名称的文件位于
public/packs/js
),并通过不再在自定义端口上运行我的Rails应用程序解决了此问题


此外,当我停止该服务器并重新运行它并重新应用自定义端口时,资产也在该上下文中正确加载。

您使用的是webpack dev server吗?请使用webpacker.ymlThanks@razvans更新。我使用的是普通的旧bin/服务器。我已将webpacker.yml添加到问题中。请尝试使用devserver,看看会发生什么。我在dev服务器上运行了一个类似的配置,没有任何问题。当使用dev服务器时,public/packs应该只包含manifest.jsonTru,从开发中注释出dev服务器配置。如果你没有使用它,那么它就不应该在那里。如果在开发中运行assets:precompile。。。在预编译之前,确保public/packs为空。我注意到的一件事是,如果tjr的包不在那里,您输入一个页面,它会自动预编译,我建议您查看webpack dev server。未清除公共/包。如果您使用“rm public/packs&&bin/webpack”,它是否有效?成功了,谢谢!我当时还没有意识到你对dev服务器配置的评论,但我认为这与此无关。