gpt4 book ai didi

ruby-on-rails - Webpacker 仅创建 manifest.json 文件,因此缺少 Assets

转载 作者:行者123 更新时间:2023-12-04 15:46:31 24 4
gpt4 key购买 nike

我正在使用 webpacker gem 构建 Rails 5.2 应用程序。

我按照安装说明进行操作,因此我拥有了 app/javascript/packs/application.js文件,以及 <%= javascript_pack_tag 'application' %>在我的布局中。

启动我的 unicorn 服务器后,bin/webpack-dev-server进程,我正在访问该应用程序,网络浏览器的网络选项卡显示他无法下载 /packs/application-bdddc5e750615fa56298.js由于来自 webpack 服务器的文件结束错误(500 错误),我的服务器上的文件。

做一个 ls -alpublic/packs文件夹显示以下内容:

drwxr-xr-x  2 zedtux zedtux 4096 Apr  4 16:35 .
drwxr-xr-x 16 zedtux root 4096 Apr 4 16:35 ..
-rw-r--r-- 1 zedtux zedtux 352 Apr 4 16:35 manifest.json

还有 manifest.json包含:

{
"application.js": "/packs/application-bdddc5e750615fa56298.js",
"application.js.map": "/packs/js/application-45e23109c9e9d11521f0.hot-update.js.map",
"entrypoints": {
"application": {
"js": [
"/packs/application-bdddc5e750615fa56298.js"
],
"js.map": [
"/packs/application-bdddc5e750615fa56298.js.map",
"/packs/js/application-45e23109c9e9d11521f0.hot-update.js.map"
]
}
}
}

这是我的 config/webpacker.yml文件:

# Note: You must restart bin/webpack-dev-server for changes to take effect

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: false

# Additional paths webpack should lookup modules
# ['app/assets', 'engine/foo/app/assets']
resolved_paths: []

# Reload manifest.json on all requests so we reload latest compiled packs
cache_manifest: false

# Extract and emit a css file
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

local:
<<: *default
compile: true

# Verifies that versions and hashed value of the package contents in the project's package.json
check_yarn_integrity: true

# Reference: https://webpack.js.org/configuration/dev-server/
dev_server:
https:
key: |
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
cert: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
cacert: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
host: 0.0.0.0
port: 3035
public: 0.0.0.0:3035
hmr: true
# Inline should be set to true if using HMR
inline: true
overlay: true
compress: true
disable_host_check: true
use_local_ip: false
quiet: false
headers:
'Access-Control-Allow-Origin': '*'
watch_options:
ignored: '**/node_modules/**'

test:
<<: *default
compile: true

# Compile test packs to a separate directory
public_output_path: packs-test

production:
<<: *default

# Production depends on precompilation of packs prior to booting for performance.
compile: false

# Extract and emit a css file
extract_css: true

# Cache manifest.json for performance
cache_manifest: true

这个app是用local作为开发环境,所以我把development key重命名为local

顺便说一句,我启用了 hmr ,但即使禁用它,我也会得到相同的结果。

为什么文件夹里没有写文件?我该如何解决这个问题?

更新

当我停止 bin/webpack-dev-server进程,我重新加载页面,webpack 重新编译,文件在网络浏览器中正确加载。

更新2

在新选项卡中打开包 URL 显示 500 错误。我注意到包 URL 缺少 3035 端口。添加它会返回预期的 JavaScript 代码。

那么如何修复它以便包 URL 包含服务器端口?

最佳答案

我终于弄清楚我的设置出了什么问题。

我了解到的第一件事是,在 bin/webpack-dev-server 运行的情况下,当它捕获请求以便为它们提供服务时, Assets 文件不会写入 public/packs 文件夹了。另一方面,当停止服务器时,文件会写入磁盘,因为它们必须由 Rails 提供服务。

然后我意识到一切都与我的环境有关:我正在使用 Docker 和 docker-compose 运行我的应用程序 + 我正在使用 Nginx 反向代理 (jwilder/nginx-proxy)。

我正在使用 docker-compose exec app bin/webpack-dev-server 运行 bin/webpack-dev-server 以使其与 Rails 一起运行.

解决我的问题:

  1. 我在我的 docker-compose.yml 文件中声明了一个新容器,它有一个 VIRTUAL_HOST 等于 webpack.mydomain.co并监听端口 3035。
  2. 然后我必须更新我的 SSL/TLS 证书以添加这个新的子域并在我的 mac 上重新安装新证书。
  3. 我已经更新了我的 config/webpacker.yml 文件,不再使用 https(因为 nginx 正在处理),并更改了 host publicwebpack.mydomain.co
  4. 最后,我不得不更新 CSP 规则,当然允许将 connect-src 连接到 webpack.mydomain.co

完成后,页面加载没有任何问题,HMR 工作正常,因为 Hello World from Webpacker 消息在 Chrome 控制台中刷新,而无需重新加载当前页面。

我希望这可以帮助人们:)

关于ruby-on-rails - Webpacker 仅创建 manifest.json 文件,因此缺少 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55518935/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com