Rails: Webpacker 4.2在/app/public/packs/manifest.json中找不到应用程序 heroku
Rails: Webpacker 4.2在/app/public/packs/manifest.json中找不到应用程序 heroku
我有点困惑。我的本地rails应用程序与webpacker 4.2和react很好地配合使用,但在部署到生产环境时,出现了令人愉快的错误:can't find application in /app/public/packs/manifest.json。我尝试了以下方法:
- 尝试添加/删除用于javascript pack标签的turbo link详细信息。
- 删除了javascript include标签(不确定是否有帮助)。
- 确保我使用的是最新的webpacker 4.2。
- 在heroku上手动运行rake assets:clean && rake assets:precompile,以确保构建正常进行。
我是否错过了构建步骤或者在生产环境中遗漏了某些原因导致这个问题?还有什么需要检查的?
服务器错误:
2019-12-03T15:18:19.022024+00:00 app[web.1]: I, [2019-12-03T15:18:19.021952 #30] INFO -- : [aa0374eb-bab1-40cc-b40b-6ae3d195e07d] Completed 500 Internal Server Error in 112ms (ActiveRecord: 30.4ms | Allocations: 21296)
2019-12-03T15:18:19.023103+00:00 app[web.1]: F, [2019-12-03T15:18:19.023029 #30] FATAL -- : [aa0374eb-bab1-40cc-b40b-6ae3d195e07d]
2019-12-03T15:18:19.023107+00:00 app[web.1]: [aa0374eb-bab1-40cc-b40b-6ae3d195e07d] ActionView::Template::Error (Webpacker在/app/public/packs/manifest.json中找不到应用程序。可能的原因:
2019-12-03T15:18:19.023109+00:00 app[web.1]: 1. 你想为你的环境设置webpacker.yml的compile值为true,除非你使用`webpack -w`或webpack-dev-server。
2019-12-03T15:18:19.023111+00:00 app[web.1]: 2. webpack尚未重新运行以反映更新。
2019-12-03T15:18:19.023114+00:00 app[web.1]: 3. 你已经错误配置了Webpacker的config/webpacker.yml文件。
2019-12-03T15:18:19.023116+00:00 app[web.1]: 4. 你的webpack配置没有创建清单。
2019-12-03T15:18:19.023120+00:00 app[web.1]: 你的清单包含:
{
"application.js": "/packs/js/application-2a0e2c932678ebbf2ae7.js",
"application.js.map": "/packs/js/application-2a0e2c932678ebbf2ae7.js.map",
"entrypoints": {
"application": {
"js": [
"/packs/js/application-2a0e2c932678ebbf2ae7.js"
],
"js.map": [
"/packs/js/application-2a0e2c932678ebbf2ae7.js.map"
]
},
"server_rendering": {
"js": [
"/packs/js/server_rendering-eb794d024d4852e8ab55.js"
],
"js.map": [
"/packs/js/server_rendering-eb794d024d4852e8ab55.js.map"
]
}
},
"server_rendering.js": "/packs/js/server_rendering-eb794d024d4852e8ab55.js",
"server_rendering.js.map": "/packs/js/server_rendering-eb794d024d4852e8ab55.js.map"
}
...
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
<%= javascript_pack_tag 'application' %>
2019-12-03T15:18:19.023193+00:00 app[web.1]: [aa0374eb-bab1-40cc-b40b-6ae3d195e07d] app/views/layouts/application.html.erb:10
Webpacker.yml:
# 注意:必须重新启动bin/webpack-dev-server才能使更改生效
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
# webpack应该查找模块的其他路径
# ['app/assets', 'engine/foo/app/assets']
resolved_paths: ['app/assets']
# 在所有请求上重新加载manifest.json,以便重新加载最新编译的packs
cache_manifest: false
# 提取并发出css文件
extract_css: false
static_assets_extensions:
- .jpg
- .jpeg
- .png
- .gif
- .tiff
- .ico
- .svg
- .eot
- .otf
- .ttf
- .woff
- .woff2
extensions:
- .jsx
- .vue
- .mjs
- .js
- .sass
- .scss
- .css
- .module.sass
- .module.scss
- .module.css
- .png
- .svg
- .gif
- .jpeg
- .jpg
development:
<<: *default
compile: true
# 通过检查package.json、yarn.lock和node_modules来验证正确的包和版本是否已安装
check_yarn_integrity: true
# 参考:https://webpack.js.org/configuration/dev-server/
dev_server:
https: false
host: localhost
port: 3035
public: localhost:3035
hmr: false
# 如果使用HMR,则应将inline设置为true
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
# 将测试packs编译到单独的目录
public_output_path: packs-test
production:
<<: *default
# 为了提高性能,在启动之前预编译packs
compile: true
# 提取并发出css文件
extract_css: true
# 为了提高性能,缓存manifest.json
cache_manifest: true