📅  最后修改于: 2023-12-03 15:35:40.622000             🧑  作者: Mango
当使用 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/'
},
// ...
})
如果 webpacker.yml
和 webpack.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
文件并解决任何错误。