Skip to content

Webpacker fails to find image asset in a subdirectory #2956

Closed
@mildred

Description

@mildred

Using webpacker 6.0.0.pre.2 and webpack 5.26.1, rails view cannot find paths for image asset.

Here is the haml line that fails in my view:

= image_pack_tag('flags/fr.svg', class: 'flag rounded-circle me-1')

I'm getting the Webpacker::Manifest::MissingEntryError exception. The image is located in app/webpack/images/flags/fr.svg. The directory structure looks like:

app/webpack/
├── images
│   ├── favicon.ico
│   └── flags
│       ├── en.svg
│       ├── fr.svg
│       └── zh.svg
├── packs
│   ├── application.js
│   └── application.scss
├── src/...
└── stylesheets/...

webpacker.yml contains:

default: &default
  source_path: app/webpack
  source_entry_path: packs
  public_root_path: public
  public_output_path: packs
  cache_path: tmp/cache/webpacker
  check_yarn_integrity: false
  webpack_compile_output: true

  resolved_paths: ["app/webpack/images"]

It seems that the problem lies with the manifest generation. The asset path should be flags/fr.svg relative to app/webpack/images but the flags/ path prefix seems to be missing. The manifest contains:

{
  "application.css": "/packs/css/application.css",
  "application.js": "/packs/js/application-725aea22742bad3243cc.js",
  "css/application.css.map": "/packs/css/application.css.map",
  "entrypoints": {
    "application": {
      "assets": {
        "js": [
          "/packs/js/runtime-089dda7adff9a5688a94.js",
          "/packs/js/vendors-node_modules_hotwired_turbo-rails_app_javascript_turbo_index_js-node_modules_rails_ac-f25bc2-cef2fc19854103ad4fbc.js",
          "/packs/js/application-725aea22742bad3243cc.js"
        ],
        "css": [
          "/packs/css/application.css"
        ]
      }
    }
  },
  "js/application-725aea22742bad3243cc.js.map": "/packs/js/application-725aea22742bad3243cc.js.map",
  "js/runtime-089dda7adff9a5688a94.js.map": "/packs/js/runtime-089dda7adff9a5688a94.js.map",
  "js/vendors-node_modules_hotwired_turbo-rails_app_javascript_turbo_index_js-node_modules_rails_ac-f25bc2-cef2fc19854103ad4fbc.js": "/packs/js/vendors-node_modules_hotwired_turbo-rails_app_javascript_turbo_index_js-node_modules_rails_ac-f25bc2-cef2fc19854103ad4fbc.js",
  "js/vendors-node_modules_hotwired_turbo-rails_app_javascript_turbo_index_js-node_modules_rails_ac-f25bc2-cef2fc19854103ad4fbc.js.map": "/packs/js/vendors-node_modules_hotwired_turbo-rails_app_javascript_turbo_index_js-node_modules_rails_ac-f25bc2-cef2fc19854103ad4fbc.js.map",
  "js/vendors-node_modules_rails_actioncable_src_index_js-145d9f25b4424ce0cea9.chunk.js": "/packs/js/vendors-node_modules_rails_actioncable_src_index_js-145d9f25b4424ce0cea9.chunk.js",
  "js/vendors-node_modules_rails_actioncable_src_index_js-145d9f25b4424ce0cea9.chunk.js.map": "/packs/js/vendors-node_modules_rails_actioncable_src_index_js-145d9f25b4424ce0cea9.chunk.js.map",
  "media/images/en.svg": "/packs/media/images/601fdab623a59f2a2c9a.svg",
  "media/images/favicon.ico": "/packs/media/images/5c5c455f9d579ead5efe.ico",
  "media/images/fr.svg": "/packs/media/images/c88df3297cffe49852ae.svg",
  "media/images/zh.svg": "/packs/media/images/f5a6f048eb8367343bd4.svg",
  "runtime.js": "/packs/js/runtime-089dda7adff9a5688a94.js"
}

Perhaps this is a misconfiguration or a bug of webpack-assets-manifest in

new WebpackAssetsManifest({
entrypoints: true,
writeToDisk: true,
output: 'manifest.json',
entrypointsUseAssets: true,
publicPath: true
})
but I'm not sure

Metadata

Metadata

Assignees

No one assigned

    Labels

    file loadersfile-loader, fonts, images etc.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions