📌  相关文章
📜  Webpacker 找不到应用程序 (1)

📅  最后修改于: 2023-12-03 15:35:40.622000             🧑  作者: Mango

Webpacker 找不到应用程序

当使用 Rails 6和 Webpacker时,它可能会发生以下错误:

Webpacker::FileLoader::WebpackerNotFound
Webpacker can't find application in /path/to/application/public/packs/manifest.json. Possible causes:
1. You want to set webpacker.yml value of webpack_public_output_path to public/packs/manifest.json
2. webpack_public_output_path is set to the wrong value in webpack.config.js
3. your webpack configuration is not creating a manifest.
Your manifest contains:
{
}

这个错误表明 Webpacker 在扫描页面的 manifest.json 文件时找不到应用程序。这可能是由于几种原因导致的,下面是解决这个问题的一些步骤:

确认 public/packs/manifest.json 文件的存在

首先,确保 public/packs/manifest.json 文件的存在。如果该文件不存在,则 Webpacker 将无法找到应用程序(以及其他资产)。请确保您的资产已预编译并已正确生成。

检查 webpacker.yml 文件的设置

webpacker.yml 文件中,确保 webpack_public_output_path 的值为 public/packs/manifest.json。这告诉 Webpacker 去哪里查找资产文件。

# config/webpacker.yml
production:
  # ...
  public_output_path: packs/
  webpack_public_output_path: packs/manifest.json
检查 webpack.config.js 文件的设置

webpack.config.js 文件中,确保 output 选项与 webpack_public_output_path 的值匹配。

// config/webpack/production.js
const { webpackPublicOutputPath } = require('@rails/webpacker').config

module.exports = merge(commonConfig, {
  output: {
    path: webpackPublicOutputPath,
    filename: '[name]-[hash].js',
    publicPath: '/packs/'
  },
  // ...
})
检查您的 Webpack 配置并生成清单

如果 webpacker.ymlwebpack.config.js 文件都被正确配置,并且 manifest.json 文件仍然无法找到,那么您可能需要确保您的 Webpack 配置中已设置正确的 manifest 选项。在 Webpack 配置中添加以下内容:

// config/webpacker.yml
module.exports = { 
  // ...
  plugins: [
    new ManifestPlugin({
      fileName: 'manifest.json',
      publicPath: '/packs/',
      writeToFileEmit: true
    })
  ]
}

这将告诉 Webpack 生成清单并将其保存到正确的位置。 重新运行 rails webpacker:compile 命令后,您应该能够找到 manifest.json 文件并解决任何错误。