生产环境中的 Rails Webpacker 编译错误

阿吽n*_*o呼吸 15 ruby-on-rails webpack webpacker

环境

Rails 6.0.0
Ruby 2.6.0
Amazon Linux2
Run Code Online (Sandbox Code Playgroud)

什么

在此处输入图片说明

当我部署 Rails 应用程序时,会发生此错误

ActionView::Template::Error (Webpacker can't find application in /home/web/www/eloop-regular/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of compile to true for your environment
   unless you are using the `webpack -w` or the webpack-dev-server.
2. webpack has not yet re-run to reflect updates.
3. You have misconfigured Webpacker's config/webpacker.yml file.
4. Your webpack configuration is not creating a manifest.

Run Code Online (Sandbox Code Playgroud)

1. 除非您使用webpack -wwebpack-dev-server 或 webpack-dev-server,否则您希望为您的环境将 compile 的 webpacker.yml 值设置为 true 。

我的 config/webpacker.yml 包含

production:
  <<: *default

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

  # Extract and emit a css file
  extract_css: true

  # Cache manifest.json for performance
  cache_manifest: true
Run Code Online (Sandbox Code Playgroud)

2. webpack 尚未重新运行以反映更新。

我跑

$ RAILS_ENV=production bundle exec rails webpacker:compile
Run Code Online (Sandbox Code Playgroud)

3. 你错误地配置了 Webpacker 的 config/webpacker.yml 文件。

在开发环境中 webpacker 工作正常。

4. 你的 webpack 配置没有创建清单。

manifest.json 已创建

Hun*_* Om 16

当我运行预构建的 rails 6 应用程序时,我遇到了同样的问题。发现这是因为 yarn.lock 文件中的 Webpack 版本不一致。然后当我跑

yarn add @rails/webpacker

bundle update webpacker

如在此评论中发现的,问题已解决。

  • ```yarn add @rails/webpacker``` 帮助我解决了这个问题。谢谢 (2认同)

shi*_*ovk 5

删除 Webpacker:

rm -rf bin/webpack*
Run Code Online (Sandbox Code Playgroud)

安装 Webpacker:

rails webpacker:install
Run Code Online (Sandbox Code Playgroud)

通过Webpacker以production模式编译:

RAILS_ENV=production rails webpacker:compile
Run Code Online (Sandbox Code Playgroud)

About this