Webpacker: Can't find precompiled assets for staging environment

Created on 16 Apr 2019  路  7Comments  路  Source: rails/webpacker

In use Rails 6.
I faced with next issue. After NODE_ENV=staging bundle exec rake assets:precompile I can see precompiled files and in browser inspector

http://myhost:3000/packs/js/application-e94faca7cbdab4833f5d.js and status 404
I can see this file by /app/public/packs/js/application-e94faca7cbdab4833f5d.js and with extentions .js.gz .js.map .js.map.gz

my webpacker.yml

# Note: You must restart bin/webpack-dev-server for changes to take effect

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

  # Additional paths webpack should lookup modules
  # ['app/assets', 'engine/foo/app/assets']
  resolved_paths: []

  # Reload manifest.json on all requests so we reload latest compiled packs
  cache_manifest: false

  # Extract and emit a css file
  extract_css: false

  static_assets_extensions:
    - .jpg
    - .jpeg
    - .png
    - .gif
    - .tiff
    - .ico
    - .svg
    - .eot
    - .otf
    - .ttf
    - .woff
    - .woff2

  extensions:
    - .coffee
    - .mjs
    - .js
    - .sass
    - .scss
    - .css
    - .module.sass
    - .module.scss
    - .module.css
    - .png
    - .svg
    - .gif
    - .jpeg
    - .jpg

development:
  <<: *default
  compile: true

  # Verifies that versions and hashed value of the package contents in the project's package.json
  check_yarn_integrity: true

  # Reference: https://webpack.js.org/configuration/dev-server/
  dev_server:
    https: false
    host: localhost
    port: 3035
    public: localhost:3035
    hmr: false
    # Inline should be set to true if using HMR
    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

  # Compile test packs to a separate directory
  public_output_path: packs-test

staging:
  <<: *default

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

  # Extract and emit a css file
  extract_css: true

  # Cache manifest.json for performance
  cache_manifest: true

production:
  <<: *default

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

  # Extract and emit a css file
  extract_css: true

  # Cache manifest.json for performance
  cache_manifest: true

project in Docker

Thx

All 7 comments

NODE_ENV=staging is not valid: https://github.com/rails/webpacker#custom-rails-environments

Please note, NODE_ENV can either be set to production, development or test. This means you don't need to create additional environment files inside config/webpacker/* and instead use webpacker.yml to load different configurations using RAILS_ENV.

@jakeNiemiec with RAILS_ENV=staging bundle exec rake assets:precompile the same situation.

More likely that pipeline doesn't include path to /public/packs/js

I don't think the webpacker:compile will use any environment other than production despite what the readme says. See here: https://github.com/rails/webpacker/blob/master/lib/tasks/webpacker/compile.rake#L29

If you want to compile for any other NODE_ENV I think the recommended way is through the bin stub: ./bin/webpack

Why not use the production build in staging in the first place ? It should be the same path right ?

Maybe this issue is not relevant anymore I guess.

Can this issue be closed ?

@guillaumebriday sure, please close this issue

I can鈥檛 馃檪 but if you think this issue is not relevant anymore, you can close it 馃憤

Had the same issue, but in my case, I forget to set (rails 5)
config.public_file_server.enabled =true in config/environments/staging.rb

In case others have the same issue with me.

Was this page helpful?
0 / 5 - 0 ratings