Javascript Rails web app:Rack app错误处理请求{GET/packs/js/application-682c14949987e19a8380.js}
当我在本地版本的Rails 6应用程序上加载主视图(或任何视图)时(我正在通过localhost使用webpack dev server运行该应用程序),将加载页面,但不会加载javascript,因为当webpack调用我的app/javascript/packs目录中的application.js时,我会继续收到以下内部服务器错误:Javascript Rails web app:Rack app错误处理请求{GET/packs/js/application-682c14949987e19a8380.js},javascript,html,ruby-on-rails,webpack,puma,Javascript,Html,Ruby On Rails,Webpack,Puma,当我在本地版本的Rails 6应用程序上加载主视图(或任何视图)时(我正在通过localhost使用webpack dev server运行该应用程序),将加载页面,但不会加载javascript,因为当webpack调用我的app/javascript/packs目录中的application.js时,我会继续收到以下内部服务器错误: 2020-07-28 18:04:57 -0500: HTTP parse error, malformed request (): #<
2020-07-28 18:04:57 -0500: HTTP parse error, malformed request ():
#<Puma::HttpParserError: Invalid HTTP format, parsing fails.
---
2020-07-28 18:04:57 -0500: Rack app error handling request { GET /packs/js/application-682c14949987e19a8380.js }
#<OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: wrong version number>
在我的application.html.slim文件中,我使用javascript_pack_标记调用application.js文件:
html
head
title Domus
= csrf_meta_tags
= csp_meta_tag
= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload'
body
= yield
我的webpacker.yml文件如下所示:
default: &default
source_path: app/javascript
source_entry_path: packs
public_root_path: public
public_output_path: packs
cache_path: tmp/cache/webpacker
check_yarn_integrity: false
webpack_compile_output: true
resolved_paths: []
cache_manifest: false
extract_css: false
static_assets_extensions:
- .jpg
- .jpeg
- .png
- .gif
- .tiff
- .ico
- .svg
- .eot
- .otf
- .ttf
- .woff
- .woff2
extensions:
- .mjs
- .js
- .sass
- .scss
- .css
- .module.sass
- .module.scss
- .module.css
- .png
- .svg
- .gif
- .jpeg
- .jpg
development:
<<: *default
compile: true
check_yarn_integrity: true
dev_server:
https: true
host: localhost
port: 3000
public: localhost:3000
hmr: false
inline: false
overlay: true
compress: true
disable_host_check: true
use_local_ip: false
quiet: false
pretty: false
headers:
'Access-Control-Allow-Origin': '*'
watch_options:
ignored: '**/node_modules/**'
default:&default
源路径:app/javascript
来源\输入\路径:包
public\u root\u路径:public
公共\u输出\u路径:包
缓存路径:tmp/cache/webpacker
检查纱线的完整性:错误
网页包编译输出:true
已解析的路径:[]
缓存清单:false
提取css:false
静态资源扩展:
-jpg先生
-.jpeg
-.png
-.gif
-蒂芙先生
-.ico
-.svg
-.eot
-.otf
-.ttf
-沃夫先生
-woff2先生
扩展:
-mjs先生
-.js
-萨斯先生
-.scss
-.css
-.module.sass
-.module.scss
-.module.css
-.png
-.svg
-.gif
-.jpeg
-jpg先生
发展:
您必须在不同的端口中运行rails服务器和webpack dev服务器,rails通常在端口3000中运行,而webpacker默认使用3035,因此在webpacker.yml中,请确保使用不同的端口:
端口:3035
public:localhost:3035
您可能还必须在webpack.yml中禁用https
,具体取决于您的设置。我先运行bin/webpack dev server
,然后运行rails s
解决了这个问题。我相信问题可能是webpack没有在packs目录中创建manifest.json文件。您是如何解决这个问题的?
default: &default
source_path: app/javascript
source_entry_path: packs
public_root_path: public
public_output_path: packs
cache_path: tmp/cache/webpacker
check_yarn_integrity: false
webpack_compile_output: true
resolved_paths: []
cache_manifest: false
extract_css: false
static_assets_extensions:
- .jpg
- .jpeg
- .png
- .gif
- .tiff
- .ico
- .svg
- .eot
- .otf
- .ttf
- .woff
- .woff2
extensions:
- .mjs
- .js
- .sass
- .scss
- .css
- .module.sass
- .module.scss
- .module.css
- .png
- .svg
- .gif
- .jpeg
- .jpg
development:
<<: *default
compile: true
check_yarn_integrity: true
dev_server:
https: true
host: localhost
port: 3000
public: localhost:3000
hmr: false
inline: false
overlay: true
compress: true
disable_host_check: true
use_local_ip: false
quiet: false
pretty: false
headers:
'Access-Control-Allow-Origin': '*'
watch_options:
ignored: '**/node_modules/**'