skip to Main Content

So I built a basic app then I was ready to test a "production" prototype and it wouldn’t push to Heroku. It worked fine locally though. So I ran through the steps, pushing a git right after each step, in a different directory and found that it was after I ran hotwire:install that it failed.

Steps:

Ruby version: 3.0.0
Rails Version 6.1.1

rails new yourapp -d PostgreSQL
cd yourapp
git add .
git commit -m "initial"
Heroku create yourapp
git push Heroku master
(you may need to run bundle lock to add linux support then another commit)
--push was successful

bundle add hotwire-rails
git add .
git commit -m "added hotwire gem"
git push Heroku master
--push was successful

rails hotwire:install
bundle install
git add .
git commit -m "ran hotwire install"
git push Heroku master
--push rejected.  See output below.


patrick@Patricks-MBP chatapp2 % git push heroku master
Enumerating objects: 28, done.
Counting objects: 100% (28/28), done.
Delta compression using up to 12 threads
Compressing objects: 100% (15/15), done.
Writing objects: 100% (17/17), 2.60 KiB | 532.00 KiB/s, done.
Total 17 (delta 11), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote: -----> Building on the Heroku-20 stack
remote: -----> Ruby app detected
remote: -----> Installing bundler 2.1.4
remote: -----> Removing BUNDLED WITH version in the Gemfile.lock
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-3.0.0
remote: -----> Installing dependencies using bundler 2.1.4
remote:        Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
remote:        Fetching gem metadata from https://rubygems.org/............
remote:        Using rake 13.0.3
remote:        Using concurrent-ruby 1.1.8
remote:        Using minitest 5.14.3
remote:        Using zeitwerk 2.4.2
remote:        Using builder 3.2.4
remote:        Using erubi 1.10.0
remote:        Using racc 1.5.2
remote:        Using crass 1.0.6
remote:        Using rack 2.2.3
remote:        Using nio4r 2.5.4
remote:        Using websocket-extensions 0.1.5
remote:        Using mimemagic 0.3.5
remote:        Using mini_mime 1.0.2
remote:        Using msgpack 1.3.3
remote:        Using bundler 2.2.3
remote:        Using ffi 1.14.2
remote:        Using method_source 1.0.0
remote:        Using thor 1.1.0
remote:        Using pg 1.2.3
remote:        Fetching redis 4.2.5
remote:        Using tilt 2.0.10
remote:        Using i18n 1.8.7
remote:        Using semantic_range 2.3.1
remote:        Using tzinfo 2.0.4
remote:        Using marcel 0.3.3
remote:        Using mail 2.7.1
remote:        Using bootsnap 1.5.1
remote:        Using puma 5.1.1
remote:        Using sassc 2.4.0
remote:        Using nokogiri 1.11.1 (x86_64-linux)
remote:        Using rack-test 1.1.0
remote:        Using websocket-driver 0.7.3
remote:        Using sprockets 4.0.2
remote:        Using rack-proxy 0.6.5
remote:        Using activesupport 6.1.1
remote:        Using loofah 2.9.0
remote:        Using rails-dom-testing 2.0.3
remote:        Using globalid 0.4.2
remote:        Using activemodel 6.1.1
remote:        Using jbuilder 2.11.1
remote:        Using rails-html-sanitizer 1.3.0
remote:        Using activejob 6.1.1
remote:        Using activerecord 6.1.1
remote:        Using actionview 6.1.1
remote:        Installing redis 4.2.5
remote:        Using actionpack 6.1.1
remote:        Using actioncable 6.1.1
remote:        Using activestorage 6.1.1
remote:        Using actionmailer 6.1.1
remote:        Using railties 6.1.1
remote:        Using sprockets-rails 3.2.2
remote:        Using actionmailbox 6.1.1
remote:        Using actiontext 6.1.1
remote:        Using sassc-rails 2.1.2
remote:        Using webpacker 5.2.1
remote:        Using rails 6.1.1
remote:        Using sass-rails 6.0.0
remote:        Using stimulus-rails 0.2.2
remote:        Using turbo-rails 0.5.7
remote:        Using hotwire-rails 0.1.3
remote:        Bundle complete! 18 Gemfile dependencies, 59 gems now installed.
remote:        Gems in the groups development and test were not installed.
remote:        Bundled gems are installed into `./vendor/bundle`
remote:        Removing bundler (2.1.4)
remote:        Removing turbolinks (5.2.1)
remote:        Removing turbolinks-source (5.2.0)
remote:        Bundle completed (3.08s)
remote:        Cleaning up the bundler cache.
remote: -----> Installing node-v12.16.2-linux-x64
remote: -----> Installing yarn-v1.22.4
remote: -----> Detecting rake tasks
remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        yarn install v1.22.4
remote:        [1/4] Resolving packages...
remote:        [2/4] Fetching packages...
remote:        info [email protected]: The platform "linux" is incompatible with this module.
remote:        info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
remote:        info [email protected]: The platform "linux" is incompatible with this module.
remote:        info "[email protected]" is an optional dependency and failed compatibility check. Excluding it from installation.
remote:        [3/4] Linking dependencies...
remote:        warning " > [email protected]" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
remote:        warning "webpack-dev-server > [email protected]" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
remote:        [4/4] Building fresh packages...
remote:        Done in 26.86s.
remote:        Compiling...
remote:        Compilation failed:
remote:        ModuleNotFoundError: Module not found: Error: Can't resolve 'controllers' in '/tmp/build_aa8db0c8/app/javascript/packs'
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/Compilation.js:925:10
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/NormalModuleFactory.js:401:22
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/NormalModuleFactory.js:130:21
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/NormalModuleFactory.js:224:22
remote:            at /tmp/build_aa8db0c8/node_modules/neo-async/async.js:2830:7
remote:            at /tmp/build_aa8db0c8/node_modules/neo-async/async.js:6877:13
remote:            at /tmp/build_aa8db0c8/node_modules/webpack/lib/NormalModuleFactory.js:214:25
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:213:14
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:44:7
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:41:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/ModuleKindPlugin.js:30:40
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:14:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/forEachBail.js:30:14
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/UnsafeCachePlugin.js:44:7
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:13:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:25:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/DescriptionFilePlugin.js:67:43
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/Resolver.js:285:5
remote:            at eval (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:14:1)
remote:            at /tmp/build_aa8db0c8/node_modules/enhanced-resolve/lib/RootPlugin.js:37:38
remote:            at _next42 (eval at create (/tmp/build_aa8db0c8/node_modules/tapable/lib/HookCodeFactory.js:33:10), <anonymous>:6:1)
remote:        resolve 'controllers' in '/tmp/build_aa8db0c8/app/javascript/packs'
remote:          Parsed request is a module
remote:          using description file: /tmp/build_aa8db0c8/package.json (relative path: ./app/javascript/packs)
remote:            Field 'browser' doesn't contain a valid alias configuration
remote:            resolve as module
remote:              looking for modules in /tmp/build_aa8db0c8/app/javascript
remote:                using description file: /tmp/build_aa8db0c8/package.json (relative path: ./app/javascript)
remote:                  Field 'browser' doesn't contain a valid alias configuration
remote:                  using description file: /tmp/build_aa8db0c8/package.json (relative path: ./app/javascript/controllers)
remote:                    no extension
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers is not a file
remote:                    .mjs
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.mjs doesn't exist
remote:                    .js
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.js doesn't exist
remote:                    .sass
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.sass doesn't exist
remote:                    .scss
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.scss doesn't exist
remote:                    .css
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.css doesn't exist
remote:                    .module.sass
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.module.sass doesn't exist
remote:                    .module.scss
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.module.scss doesn't exist
remote:                    .module.css
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.module.css doesn't exist
remote:                    .png
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.png doesn't exist
remote:                    .svg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.svg doesn't exist
remote:                    .gif
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.gif doesn't exist
remote:                    .jpeg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.jpeg doesn't exist
remote:                    .jpg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/app/javascript/controllers.jpg doesn't exist
remote:                    as directory
remote:                      existing directory
remote:                        using path: /tmp/build_aa8db0c8/app/javascript/controllers/index
remote:                          using description file: /tmp/build_aa8db0c8/package.json (relative path: ./app/javascript/controllers/index)
remote:                            no extension
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index doesn't exist
remote:                            .mjs
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.mjs doesn't exist
remote:                            .js
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.js doesn't exist
remote:                            .sass
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.sass doesn't exist
remote:                            .scss
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.scss doesn't exist
remote:                            .css
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.css doesn't exist
remote:                            .module.sass
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.module.sass doesn't exist
remote:                            .module.scss
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.module.scss doesn't exist
remote:                            .module.css
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.module.css doesn't exist
remote:                            .png
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.png doesn't exist
remote:                            .svg
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.svg doesn't exist
remote:                            .gif
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.gif doesn't exist
remote:                            .jpeg
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.jpeg doesn't exist
remote:                            .jpg
remote:                              Field 'browser' doesn't contain a valid alias configuration
remote:                              /tmp/build_aa8db0c8/app/javascript/controllers/index.jpg doesn't exist
remote:              /tmp/build_aa8db0c8/app/javascript/packs/node_modules doesn't exist or is not a directory
remote:              /tmp/build_aa8db0c8/app/javascript/node_modules doesn't exist or is not a directory
remote:              /tmp/build_aa8db0c8/app/node_modules doesn't exist or is not a directory
remote:              /tmp/node_modules doesn't exist or is not a directory
remote:              /node_modules doesn't exist or is not a directory
remote:              looking for modules in /tmp/build_aa8db0c8/node_modules
remote:                using description file: /tmp/build_aa8db0c8/package.json (relative path: ./node_modules)
remote:                  Field 'browser' doesn't contain a valid alias configuration
remote:                  using description file: /tmp/build_aa8db0c8/package.json (relative path: ./node_modules/controllers)
remote:                    no extension
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers doesn't exist
remote:                    .mjs
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.mjs doesn't exist
remote:                    .js
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.js doesn't exist
remote:                    .sass
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.sass doesn't exist
remote:                    .scss
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.scss doesn't exist
remote:                    .css
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.css doesn't exist
remote:                    .module.sass
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.module.sass doesn't exist
remote:                    .module.scss
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.module.scss doesn't exist
remote:                    .module.css
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.module.css doesn't exist
remote:                    .png
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.png doesn't exist
remote:                    .svg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.svg doesn't exist
remote:                    .gif
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.gif doesn't exist
remote:                    .jpeg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.jpeg doesn't exist
remote:                    .jpg
remote:                      Field 'browser' doesn't contain a valid alias configuration
remote:                      /tmp/build_aa8db0c8/node_modules/controllers.jpg doesn't exist
remote:                    as directory
remote:                      /tmp/build_aa8db0c8/node_modules/controllers doesn't exist
remote:        
remote: 
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed
remote:  !
remote:  ! ## Warning - The same version of this code has already been built: 0beb51342bdb63474012846f517d2f5978f00b80
remote:  !
remote:  ! We have detected that you have triggered a build from source code with version 0beb51342bdb63474012846f517d2f5978f00b80
remote:  ! at least twice. One common cause of this behavior is attempting to deploy code from a different branch.
remote:  !
remote:  ! If you are developing on a branch and deploying via git you must run:
remote:  !
remote:  !     git push heroku <branchname>:main
remote:  !
remote:  ! This article goes into details on the behavior:
remote:  !   https://devcenter.heroku.com/articles/duplicate-build-version
remote: 
remote: Verifying deploy...
remote: 
remote: !   Push rejected to chatapp4db.
remote: 
To https://git.heroku.com/chatapp4db.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/chatapp4db.git'

Please let me know if you are able to determine the issue. I can see it’s a Module error, but it only happens with hot-wire:install.

2

Answers


  1. Chosen as BEST ANSWER

    So, apparently when you do hotwire:install, it neglects to also install the controllers module. Running yarn add controllers solved this issue for me. I did also have to be a verified user of Heroku in order to include the Heroku Redis Hobby Dev plan otherwise the Heroku instance would completely crash and I had to reboot the server.


  2. I think you need to install webpacker, seems like node_module folder is not there.
    To install webpacker

    bundle exec rails webpacker:install
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search