jahseng-lee
(Jah Seng Lee)
November 25, 2020, 12:17pm
1
I’ve spun up a new rails project with the following command:
rails new <package-name> -d postgresql --skip-spring --skip-test --webpack=react
Following this, I created my database, added <%= javascript_pack_tag 'hello_react' %>
to application.html.erb
and generated a homepage.
I then ran:
rails s # tab 1
bin/webpack-dev-server # tab 2
This all works fine and I can see “Hello World!” at localhost:3000.
However, when I try to push to Heroku, the build fails at webpack binstubs not found.
. I can confirm that bin/webpack
does exist, doing rails webpack:install:react
does nothing.
I’ve followed the instructions at https://github.com/rails/webpacker/blob/master/docs/deployment.md#heroku to no avail, still getting the exact same error.
I’ve even tried setting compile: true
in config/webpacker.yml
, in the production section. Nothing.
This seems odd as this is a new project with nothing special in it; I’m confused as to why it cannot seem to find the declaration of bin/webpack
. It is not in my .gitignore
.
Any help would be great.
Cheers.
jahseng-lee
(Jah Seng Lee)
November 25, 2020, 12:20pm
2
Full build logs:
-----> Node.js app detected
-----> Creating runtime environment
NPM_CONFIG_LOGLEVEL=error
USE_YARN_CACHE=true
NODE_ENV=production
NODE_MODULES_CACHE=true
NODE_VERBOSE=false
-----> Installing binaries
engines.node (package.json): unspecified
engines.npm (package.json): unspecified (use default)
engines.yarn (package.json): unspecified (use default)
Resolving node version 12.x...
Downloading and installing node 12.19.1...
Using default npm version: 6.14.8
Resolving yarn version 1.22.x...
Downloading and installing yarn (1.22.10)
Installed yarn 1.22.10
-----> Installing dependencies
Installing node modules (yarn.lock)
yarn install v1.22.10
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@2.1.3: The platform "linux" is incompatible with this module.
info "fsevents@2.1.3" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.13: The platform "linux" is incompatible with this module.
info "fsevents@1.2.13" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > @babel/preset-react@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-display-name@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-development@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-self@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-source@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-pure-annotations@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx > @babel/plugin-syntax-jsx@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > webpack-dev-server@3.11.0" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
[4/4] Building fresh packages...
Done in 29.74s.
-----> Build
-----> Pruning devDependencies
yarn install v1.22.10
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@2.1.3: The platform "linux" is incompatible with this module.
info "fsevents@2.1.3" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.13: The platform "linux" is incompatible with this module.
info "fsevents@1.2.13" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > @babel/preset-react@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-display-name@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-development@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-self@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-source@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-pure-annotations@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx > @babel/plugin-syntax-jsx@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > webpack-dev-server@3.11.0" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
[4/4] Building fresh packages...
warning Ignored scripts due to flag.
Done in 5.82s.
-----> Caching build
- yarn cache
-----> Build succeeded!
! This app may not specify any way to start a node process
https://devcenter.heroku.com/articles/nodejs-support#default-web-process-type
! Unmet dependencies don't fail yarn install but may cause runtime issues
https://github.com/npm/npm/issues/7494
-----> Ruby app detected
-----> Installing bundler 2.1.4
-----> Removing BUNDLED WITH version in the Gemfile.lock
-----> Compiling Ruby/Rails
-----> Using Ruby version: ruby-2.7.2
-----> Installing dependencies using bundler 2.1.4
Running: BUNDLE_WITHOUT='development:test' BUNDLE_PATH=vendor/bundle BUNDLE_BIN=vendor/bundle/bin BUNDLE_DEPLOYMENT=1 bundle install -j4
The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
Fetching gem metadata from https://rubygems.org/............
Fetching rake 13.0.1
Installing rake 13.0.1
Fetching concurrent-ruby 1.1.7
Fetching thread_safe 0.3.6
Fetching minitest 5.14.2
Installing thread_safe 0.3.6
Installing minitest 5.14.2
Installing concurrent-ruby 1.1.7
Fetching zeitwerk 2.4.1
Installing zeitwerk 2.4.1
Fetching builder 3.2.4
Fetching erubi 1.10.0
Installing builder 3.2.4
Installing erubi 1.10.0
Fetching mini_portile2 2.4.0
Fetching crass 1.0.6
Installing mini_portile2 2.4.0
Installing crass 1.0.6
Fetching rack 2.2.3
Installing rack 2.2.3
Fetching nio4r 2.5.4
Installing nio4r 2.5.4 with native extensions
Fetching websocket-extensions 0.1.5
Installing websocket-extensions 0.1.5
Fetching mimemagic 0.3.5
Fetching mini_mime 1.0.2
Installing mini_mime 1.0.2
Installing mimemagic 0.3.5
Fetching msgpack 1.3.3
Installing msgpack 1.3.3 with native extensions
Using bundler 2.1.4
Fetching ffi 1.13.1
Installing ffi 1.13.1 with native extensions
Fetching method_source 1.0.0
Installing method_source 1.0.0
Fetching pg 1.2.3
Installing pg 1.2.3 with native extensions
Fetching thor 1.0.1
Installing thor 1.0.1
Fetching tilt 2.0.10
Installing tilt 2.0.10
Fetching turbolinks-source 5.2.0
Installing turbolinks-source 5.2.0
Fetching tzinfo 1.2.8
Installing tzinfo 1.2.8
Fetching nokogiri 1.10.10
Installing nokogiri 1.10.10 with native extensions
Fetching i18n 1.8.5
Installing i18n 1.8.5
Fetching rack-test 1.1.0
Installing rack-test 1.1.0
Fetching rack-proxy 0.6.5
Installing rack-proxy 0.6.5
Fetching sprockets 4.0.2
Installing sprockets 4.0.2
Fetching websocket-driver 0.7.3
Installing websocket-driver 0.7.3 with native extensions
Fetching mail 2.7.1
Installing mail 2.7.1
Fetching marcel 0.3.3
Installing marcel 0.3.3
Fetching puma 4.3.6
Installing puma 4.3.6 with native extensions
Fetching bootsnap 1.5.1
Installing bootsnap 1.5.1 with native extensions
Fetching turbolinks 5.2.1
Installing turbolinks 5.2.1
Fetching sassc 2.4.0
Installing sassc 2.4.0 with native extensions
Fetching activesupport 6.0.3.4
Installing activesupport 6.0.3.4
Fetching loofah 2.7.0
Installing loofah 2.7.0
Fetching rails-dom-testing 2.0.3
Installing rails-dom-testing 2.0.3
Fetching globalid 0.4.2
Installing globalid 0.4.2
Fetching activemodel 6.0.3.4
Installing activemodel 6.0.3.4
Fetching jbuilder 2.10.1
Installing jbuilder 2.10.1
Fetching rails-html-sanitizer 1.3.0
Installing rails-html-sanitizer 1.3.0
Fetching activejob 6.0.3.4
Fetching activerecord 6.0.3.4
Installing activejob 6.0.3.4
Installing activerecord 6.0.3.4
Fetching actionview 6.0.3.4
Installing actionview 6.0.3.4
Fetching actionpack 6.0.3.4
Installing actionpack 6.0.3.4
Fetching actioncable 6.0.3.4
Installing actioncable 6.0.3.4
Fetching actionmailer 6.0.3.4
Installing actionmailer 6.0.3.4
Fetching railties 6.0.3.4
Fetching sprockets-rails 3.2.2
Installing sprockets-rails 3.2.2
Installing railties 6.0.3.4
Fetching activestorage 6.0.3.4
Installing activestorage 6.0.3.4
Fetching actionmailbox 6.0.3.4
Installing actionmailbox 6.0.3.4
Fetching actiontext 6.0.3.4
Installing actiontext 6.0.3.4
Fetching rails 6.0.3.4
Fetching webpacker 4.3.0
Installing rails 6.0.3.4
Installing webpacker 4.3.0
Fetching sassc-rails 2.1.2
Installing sassc-rails 2.1.2
Fetching sass-rails 6.0.0
Installing sass-rails 6.0.0
Bundle complete! 12 Gemfile dependencies, 57 gems now installed.
Gems in the groups development and test were not installed.
Bundled gems are installed into `./vendor/bundle`
Post-install message from i18n:
HEADS UP! i18n 1.1 changed fallbacks to exclude default locale.
But that may break your application.
If you are upgrading your Rails application from an older version of Rails:
Please check your Rails app for 'config.i18n.fallbacks = true'.
If you're using I18n (>= 1.1.0) and Rails (< 5.2.2), this should be
'config.i18n.fallbacks = [I18n.default_locale]'.
If not, fallbacks will be broken in your app by I18n 1.1.x.
If you are starting a NEW Rails application, you can ignore this notice.
For more info see:
https://github.com/svenfuchs/i18n/releases/tag/v1.1.0
Bundle completed (208.33s)
Cleaning up the bundler cache.
-----> Detecting rake tasks
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
yarn install v1.22.10
[1/4] Resolving packages...
[2/4] Fetching packages...
info fsevents@2.1.3: The platform "linux" is incompatible with this module.
info "fsevents@2.1.3" is an optional dependency and failed compatibility check. Excluding it from installation.
info fsevents@1.2.13: The platform "linux" is incompatible with this module.
info "fsevents@1.2.13" is an optional dependency and failed compatibility check. Excluding it from installation.
[3/4] Linking dependencies...
warning " > @babel/preset-react@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-display-name@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-development@7.12.7" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-self@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx-source@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-pure-annotations@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "@babel/preset-react > @babel/plugin-transform-react-jsx > @babel/plugin-syntax-jsx@7.12.1" has unmet peer dependency "@babel/core@^7.0.0-0".
warning " > webpack-dev-server@3.11.0" has unmet peer dependency "webpack@^4.0.0 || ^5.0.0".
warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0".
[4/4] Building fresh packages...
Done in 29.50s.
I, [2020-11-25T12:02:13.452090 #3686] INFO -- : Writing /tmp/build_6728f1b1/public/assets/manifest-b4bf6e57a53c2bdb55b8998cc94cd00883793c1c37c5e5aea3ef6749b4f6d92b.js
I, [2020-11-25T12:02:13.452388 #3686] INFO -- : Writing /tmp/build_6728f1b1/public/assets/manifest-b4bf6e57a53c2bdb55b8998cc94cd00883793c1c37c5e5aea3ef6749b4f6d92b.js.gz
I, [2020-11-25T12:02:13.452661 #3686] INFO -- : Writing /tmp/build_6728f1b1/public/assets/application-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.css
I, [2020-11-25T12:02:13.452831 #3686] INFO -- : Writing /tmp/build_6728f1b1/public/assets/application-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.css.gz
I, [2020-11-25T12:02:13.453156 #3686] INFO -- : Writing /tmp/build_6728f1b1/public/assets/home-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.css
I, [2020-11-25T12:02:13.453335 #3686] INFO -- : Writing /tmp/build_6728f1b1/public/assets/home-04024382391bb910584145d8113cf35ef376b55d125bb4516cebeb14ce788597.css.gz
webpack binstubs not found.
Have you run rails webpacker:install ?
Make sure the bin directory or binstubs are not included in .gitignore
Exiting!
!
! Precompiling assets failed.
!
! Push rejected, failed to compile Ruby app.
! Push failed
SOLVED
Turns out bin/
is ignored by default in Rails.
Oddly enough, I still can’t find the code which ignores bin/
for git; it doesn’t look like it’s in the main .gitignore
However, if you run
git add -f bin/webpack && git push heroku master # or main
everything should build.