Webpacker: Incomplete webpacker installation with Node 10.0.0

Created on 26 Apr 2018  ยท  8Comments  ยท  Source: rails/webpacker

I have a freshly created Rails 5.2.0 app, using Ruby 2.5.1 and Node 10.0.0. Below is the output from rails webpacker:install

screen shot 2018-04-26 at 2 12 43 pm

Since this was my first time installing webpacker, I thought things were fine. When I attempted to run ./bin/webpack-dev-server I recieved this:

screen shot 2018-04-26 at 2 13 28 pm

It wasn't until after this, that I went back and paid closer attention to installation output to notice a dependency error on node versions.

After I downgraded Node to version 9.11.1, I re-ran the install task successfully and was able to spin up the webpack dev server.

Most helpful comment

Ok, looks like webpack depends on upath and this haven't been updated: https://github.com/anodynos/upath/issues/14

Looks like the --ignore-engines flag can be used as workaround meanwhile (yarn install --ignore-engines)

Let's keep this open until upstream issue is fixed

All 8 comments

Can you check what of the include modules is depending on upath?

Ok, looks like webpack depends on upath and this haven't been updated: https://github.com/anodynos/upath/issues/14

Looks like the --ignore-engines flag can be used as workaround meanwhile (yarn install --ignore-engines)

Let's keep this open until upstream issue is fixed

Got this same problem. Here's the full log of the error.

Workspace $ rails new ndt-nordvest --database=postgresql -T --webpack
      create
      create  README.md
      create  Rakefile
      create  .ruby-version
      create  config.ru
      create  .gitignore
      create  Gemfile
         run  git init from "."
Initialized empty Git repository in /Users/Mayor/Workspace/ndt-nordvest/.git/
      create  package.json
      create  app
      create  app/assets/config/manifest.js
      create  app/assets/javascripts/application.js
      create  app/assets/javascripts/cable.js
      create  app/assets/stylesheets/application.css
      create  app/channels/application_cable/channel.rb
      create  app/channels/application_cable/connection.rb
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/jobs/application_job.rb
      create  app/mailers/application_mailer.rb
      create  app/models/application_record.rb
      create  app/views/layouts/application.html.erb
      create  app/views/layouts/mailer.html.erb
      create  app/views/layouts/mailer.text.erb
      create  app/assets/images/.keep
      create  app/assets/javascripts/channels
      create  app/assets/javascripts/channels/.keep
      create  app/controllers/concerns/.keep
      create  app/models/concerns/.keep
      create  bin
      create  bin/bundle
      create  bin/rails
      create  bin/rake
      create  bin/setup
      create  bin/update
      create  bin/yarn
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/cable.yml
      create  config/puma.rb
      create  config/spring.rb
      create  config/storage.yml
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/application_controller_renderer.rb
      create  config/initializers/assets.rb
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/content_security_policy.rb
      create  config/initializers/cookies_serializer.rb
      create  config/initializers/cors.rb
      create  config/initializers/filter_parameter_logging.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/new_framework_defaults_5_2.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/master.key
      append  .gitignore
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  lib
      create  lib/tasks
      create  lib/tasks/.keep
      create  lib/assets
      create  lib/assets/.keep
      create  log
      create  log/.keep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/apple-touch-icon-precomposed.png
      create  public/apple-touch-icon.png
      create  public/favicon.ico
      create  public/robots.txt
      create  tmp
      create  tmp/.keep
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor
      create  vendor/.keep
      create  storage
      create  storage/.keep
      create  tmp/storage
      create  tmp/storage/.keep
      remove  config/initializers/cors.rb
      remove  config/initializers/new_framework_defaults_5_2.rb
         run  bundle install
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 gem metadata from https://rubygems.org/.
Resolving dependencies....
Using rake 12.3.1
Using concurrent-ruby 1.0.5
Using i18n 1.0.1
Using minitest 5.11.3
Using thread_safe 0.3.6
Using tzinfo 1.2.5
Using activesupport 5.2.0
Using builder 3.2.3
Using erubi 1.7.1
Using mini_portile2 2.3.0
Using nokogiri 1.8.2
Using rails-dom-testing 2.0.3
Using crass 1.0.4
Using loofah 2.2.2
Using rails-html-sanitizer 1.0.4
Using actionview 5.2.0
Using rack 2.0.5
Using rack-test 1.0.0
Using actionpack 5.2.0
Using nio4r 2.3.0
Using websocket-extensions 0.1.3
Using websocket-driver 0.7.0
Using actioncable 5.2.0
Using globalid 0.4.1
Using activejob 5.2.0
Using mini_mime 1.0.0
Using mail 2.7.0
Using actionmailer 5.2.0
Using activemodel 5.2.0
Using arel 9.0.0
Using activerecord 5.2.0
Using mimemagic 0.3.2
Using marcel 0.3.2
Using activestorage 5.2.0
Using bindex 0.5.0
Using msgpack 1.2.4
Using bootsnap 1.3.0
Using bundler 1.16.1
Using byebug 10.0.2
Using coffee-script-source 1.12.2
Using execjs 2.7.0
Using coffee-script 2.4.1
Using method_source 0.9.0
Using thor 0.20.0
Using railties 5.2.0
Using coffee-rails 4.2.2
Using ffi 1.9.23
Using multi_json 1.13.1
Using jbuilder 2.7.0
Using rb-fsevent 0.10.3
Using rb-inotify 0.9.10
Using ruby_dep 1.5.0
Using listen 3.1.5
Using pg 1.0.0
Using puma 3.11.4
Using rack-proxy 0.6.4
Using sprockets 3.7.1
Using sprockets-rails 3.2.1
Using rails 5.2.0
Using sass-listen 4.0.0
Using sass 3.5.6
Using tilt 2.0.8
Using sass-rails 5.0.7
Using spring 2.0.2
Using spring-watcher-listen 2.0.1
Using turbolinks-source 5.1.0
Using turbolinks 5.1.1
Using uglifier 4.1.10
Using web-console 3.6.1
Using webpacker 3.4.3
Bundle complete! 16 Gemfile dependencies, 70 gems now installed.
Use `bundle info [gemname]` to see where a bundled gem is installed.
       rails  webpacker:install
      create  config/webpacker.yml
Copying webpack core config
      create  config/webpack
      create  config/webpack/development.js
      create  config/webpack/environment.js
      create  config/webpack/production.js
      create  config/webpack/test.js
Copying .postcssrc.yml to app root directory
      create  .postcssrc.yml
Copying .babelrc to app root directory
      create  .babelrc
Creating JavaScript app source directory
      create  app/javascript
      create  app/javascript/packs/application.js
       apply  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/install/binstubs.rb
  Copying binstubs
       exist    bin
      create    bin/webpack
      create    bin/webpack-dev-server
Adding configurations
      append  .gitignore
Installing all JavaScript dependencies
         run  yarn add @rails/[email protected] --tilde from "."
yarn add v1.6.0
(node:22686) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
info No lockfile found.
[1/4] ๐Ÿ”  Resolving packages...
[2/4] ๐Ÿšš  Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version ">=4 <=9".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
Installing dev server for live reloading
         run  yarn add --dev [email protected] from "."
yarn add v1.6.0
(node:22688) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
info No lockfile found.
[1/4] ๐Ÿ”  Resolving packages...
[2/4] ๐Ÿšš  Fetching packages...
error [email protected]: The engine "node" is incompatible with this module. Expected version ">=4 <=9".
error Found incompatible module
info Visit https://yarnpkg.com/en/docs/cli/add for documentation about this command.
You need to allow webpack-dev-server host as allowed origin for connect-src.
This can be done in Rails 5.2+ for development environment in the CSP initializer
config/initializers/content_security_policy.rb with a snippet like this:
p.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development?
Webpacker successfully installed ๐ŸŽ‰ ๐Ÿฐ
         run  bundle exec spring binstub --all
* bin/rake: spring inserted
* bin/rails: spring inserted
Workspace $ cd ndt-nordvest/
ndt-nordvest $ code .
ndt-nordvest $ bundle exec bin/webpack-dev-server
bundler: failed to load command: bin/webpack-dev-server (bin/webpack-dev-server)
Errno::ENOENT: No such file or directory - /Users/Mayor/Workspace/ndt-nordvest/node_modules/.bin/webpack-dev-server
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:47:in `exec'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:47:in `block in execute_cmd'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:46:in `chdir'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:46:in `execute_cmd'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:11:in `run'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/runner.rb:6:in `run'
  bin/webpack-dev-server:15:in `<top (required)>'
ndt-nordvest $

After trying out with the said work around yarn install --ignore-engines still did not work.

ndt-nordvest $ yarn install --ignore-engines
yarn install v1.6.0
(node:22832) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
info No lockfile found.
[1/4] ๐Ÿ”  Resolving packages...
[2/4] ๐Ÿšš  Fetching packages...
[3/4] ๐Ÿ”—  Linking dependencies...
[4/4] ๐Ÿ“ƒ  Building fresh packages...
info Lockfile not saved, no dependencies.
โœจ  Done in 0.07s.
ndt-nordvest $ bundle exec bin/webpack-dev-server
bundler: failed to load command: bin/webpack-dev-server (bin/webpack-dev-server)
Errno::ENOENT: No such file or directory - /Users/Mayor/Workspace/ndt-nordvest/node_modules/.bin/webpack-dev-server
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:47:in `exec'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:47:in `block in execute_cmd'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:46:in `chdir'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:46:in `execute_cmd'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/dev_server_runner.rb:11:in `run'
  /Users/Mayor/.rvm/gems/ruby-2.5.1/gems/webpacker-3.4.3/lib/webpacker/runner.rb:6:in `run'
  bin/webpack-dev-server:15:in `<top (required)>'
ndt-nordvest $

Tried both with webpacker 3.4.3 and 4.0.x.pre.pre2 but got the same result.

Having similar issue when trying to install vuejs/stimulus

package.json only contains:

{
  "name": "little_expanse_manager",
  "private": true,
  "dependencies": {
    "stimulus": "^1.0.1"
  }
}

This is caused by upath (Webpack dependency) is not compatible with Node 10 (pending PR here: https://github.com/anodynos/upath/pull/15).

You need to either stick to Node 9 for now, or install Webpacker manually (yarn add --ignore-engines @rails/[email protected] [email protected]).

You can not just run yarn install --ignore-engines as advised by the default yarn error message as the add commands failed, so your package.json is empty.

You can also set ignore-engines globally, but please remember to unset it once this is fixed: yarn config set ignore-engines true

To use Node 9, you can specify your engines as

"engines": {
    "node": ">=6.0.0 <10",
    "yarn": ">=1.6.0"
  }

I'm wondering if this should be the default engines definition in package.json generated by this gem. Having Node defined as >=6.0.0 is very loose and we're running the risk that this situation happens all over again with the next major Node version.

Hello everyone - I fixed upath & published it - thanks & sorry for the delay! You can close the issue, once you check its working.

Thanks @anodynos!

Was this page helpful?
0 / 5 - 0 ratings

Related issues

suhomlineugene picture suhomlineugene  ยท  3Comments

towry picture towry  ยท  3Comments

eriknygren picture eriknygren  ยท  3Comments

iChip picture iChip  ยท  3Comments

ankitrg picture ankitrg  ยท  3Comments