1

having a issue: Yarn requires Node.js 4.0 or higher to be installed

by ssh into remote server, i have:

passwords@meet:/srv/passwords$ yarn -v
1.22.5
passwords@meet:/srv/passwords$ node -v
v16.9.1
passwords@meet:/srv/passwords$

node is installed by nvm. Additonally i made node use 16.9.1, which didnt change anything. By ssh (Login-shell) it works fine.

Gemfile:

group :development, :deploy do
  gem 'capistrano', '~> 3.14', require: false
  gem 'capistrano-faster-assets'
  gem 'capistrano-passenger'
  gem 'capistrano-rails', '~> 1.6', require: false
  gem 'capistrano-rake', require: false
  gem 'capistrano-rvm'
  gem 'capistrano-resque', require: false
end

The Error

rake stderr: Yarn requires Node.js 4.0 or higher to be installed

What i`ve done

i added to deploy/staging.rb

task :debugs do
  on roles(:app), in: :parallel do |server|
    on "passwords@#{server.hostname}" do
      #execute :node, '-v'
      execute :echo, '$PATH'
      execute :pwd
    end
  end
end
before :deploy, :debugs

So, from here, on deploying it doesnt print out the same PATH like i see on ssh, and, there is missing that part, that would point to my nvm-node binary. But, by pwd i see that it works on the remote server-home.

So, how is capistrano working on the remote shell? It seems that it doesnt execute the .bashrc which would export the nvm / node-bin part to the PATH

do i have something to configure?

below is the output of cap staging deploy

Thanks! Chris

MacBook: ~/projects-priv/passwords.rails$ cap staging deploy
rvm 1.29.12-next (master) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]
ruby-2.7.2
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]
00:00 debugs
      01 echo $PATH
      01 /usr/local/bin:/usr/bin:/bin:/usr/games
    ✔ 01 passwords@sedlmair.ch 0.245s
      02 pwd
      02 /home/passwords
    ✔ 02 passwords@sedlmair.ch 0.239s
00:00 git:wrapper
      01 mkdir -p /tmp
    ✔ 01 passwords@sedlmair.ch 0.228s
      Uploading /tmp/git-ssh-d21e8dbb787dbfd49298.sh 100.0%
      02 chmod 700 /tmp/git-ssh-d21e8dbb787dbfd49298.sh
    ✔ 02 passwords@sedlmair.ch 0.242s
00:01 git:check
      01 git ls-remote repo-get@sedlmair.ch:/repos/sedl/passwords.git HEAD
      01 8cf4b5d57543eccf3737cd670519a9deac5592b8   HEAD
    ✔ 01 passwords@sedlmair.ch 0.546s
00:02 deploy:check:directories
      01 mkdir -p /srv/passwords-staging/shared /srv/passwords-staging/releases
    ✔ 01 passwords@sedlmair.ch 0.199s
00:02 deploy:check:linked_dirs
      01 mkdir -p /srv/passwords-staging/shared/log /srv/passwords-staging/shared/backup /srv/passwords-staging/shared/tmp/pids /srv/passwords-staging/shared/tmp/cache /srv/passwords-staging/shared/tm…
    ✔ 01 passwords@sedlmair.ch 0.232s
00:02 deploy:check:make_linked_dirs
      01 mkdir -p /srv/passwords-staging/shared/config /srv/passwords-staging/shared/config/credentials
    ✔ 01 passwords@sedlmair.ch 0.230s
00:04 git:clone
      The repository mirror is at /srv/passwords-staging/repo
00:04 git:update
      01 git remote set-url origin repo-get@sedlmair.ch:/repos/sedl/passwords.git
    ✔ 01 passwords@sedlmair.ch 0.237s
      02 git remote update --prune
      02 Fetching origin
      02 From sedlmair.ch:/repos/sedl/passwords
      02    7713138..8cf4b5d  master     -> master
    ✔ 02 passwords@sedlmair.ch 0.589s
00:05 git:create_release
      01 mkdir -p /srv/passwords-staging/releases/20210917211320
    ✔ 01 passwords@sedlmair.ch 0.251s
      02 git archive master | /usr/bin/env tar -x -f - -C /srv/passwords-staging/releases/20210917211320
    ✔ 02 passwords@sedlmair.ch 0.263s
00:06 deploy:set_current_revision
      01 echo "8cf4b5d57543eccf3737cd670519a9deac5592b8" > REVISION
    ✔ 01 passwords@sedlmair.ch 0.229s
00:06 deploy:symlink:linked_files
      01 mkdir -p /srv/passwords-staging/releases/20210917211320/config /srv/passwords-staging/releases/20210917211320/config/credentials
    ✔ 01 passwords@sedlmair.ch 0.232s
      02 rm /srv/passwords-staging/releases/20210917211320/config/database.yml
    ✔ 02 passwords@sedlmair.ch 0.231s
      03 ln -s /srv/passwords-staging/shared/config/database.yml /srv/passwords-staging/releases/20210917211320/config/database.yml
    ✔ 03 passwords@sedlmair.ch 0.229s
      04 ln -s /srv/passwords-staging/shared/config/secrets.yml /srv/passwords-staging/releases/20210917211320/config/secrets.yml
    ✔ 04 passwords@sedlmair.ch 0.233s
      05 ln -s /srv/passwords-staging/shared/config/master.key /srv/passwords-staging/releases/20210917211320/config/master.key
    ✔ 05 passwords@sedlmair.ch 0.234s
      06 ln -s /srv/passwords-staging/shared/config/credentials/staging.key /srv/passwords-staging/releases/20210917211320/config/credentials/staging.key
    ✔ 06 passwords@sedlmair.ch 0.233s
00:10 deploy:symlink:linked_dirs
      01 mkdir -p /srv/passwords-staging/releases/20210917211320 /srv/passwords-staging/releases/20210917211320/tmp /srv/passwords-staging/releases/20210917211320/public
    ✔ 01 passwords@sedlmair.ch 0.236s
      02 rm -rf /srv/passwords-staging/releases/20210917211320/log
    ✔ 02 passwords@sedlmair.ch 0.232s
      03 ln -s /srv/passwords-staging/shared/log /srv/passwords-staging/releases/20210917211320/log
    ✔ 03 passwords@sedlmair.ch 0.233s
      04 ln -s /srv/passwords-staging/shared/backup /srv/passwords-staging/releases/20210917211320/backup
    ✔ 04 passwords@sedlmair.ch 0.235s
      05 rm -rf /srv/passwords-staging/releases/20210917211320/tmp/pids
    ✔ 05 passwords@sedlmair.ch 0.230s
      06 ln -s /srv/passwords-staging/shared/tmp/pids /srv/passwords-staging/releases/20210917211320/tmp/pids
    ✔ 06 passwords@sedlmair.ch 0.234s
      07 ln -s /srv/passwords-staging/shared/tmp/cache /srv/passwords-staging/releases/20210917211320/tmp/cache
    ✔ 07 passwords@sedlmair.ch 0.227s
      08 ln -s /srv/passwords-staging/shared/tmp/sockets /srv/passwords-staging/releases/20210917211320/tmp/sockets
    ✔ 08 passwords@sedlmair.ch 0.230s
      09 ln -s /srv/passwords-staging/shared/public/uploads /srv/passwords-staging/releases/20210917211320/public/uploads
    ✔ 09 passwords@sedlmair.ch 0.232s
      10 ln -s /srv/passwords-staging/shared/public/packs /srv/passwords-staging/releases/20210917211320/public/packs
    ✔ 10 passwords@sedlmair.ch 0.232s
      11 ln -s /srv/passwords-staging/shared/public/assets /srv/passwords-staging/releases/20210917211320/public/assets
    ✔ 11 passwords@sedlmair.ch 0.234s
00:16 bundler:config
      01 ~/.rvm/bin/rvm 2.7.2 do bundle config --local deployment true
    ✔ 01 passwords@sedlmair.ch 1.017s
      02 ~/.rvm/bin/rvm 2.7.2 do bundle config --local path /srv/passwords-staging/shared/bundle
    ✔ 02 passwords@sedlmair.ch 1.074s
      03 ~/.rvm/bin/rvm 2.7.2 do bundle config --local without development\ test
    ✔ 03 passwords@sedlmair.ch 1.017s
00:21 bundler:install
      The Gemfile's dependencies are satisfied, skipping installation
00:21 deploy:assets:precompile
      01 ls /srv/passwords-staging/releases/20210917211125/assets_manifest_backup
      01 ls: cannot access '/srv/passwords-staging/releases/20210917211125/assets_manifest_backup': No such file or directory
      02 ~/.rvm/bin/rvm 2.7.2 do bundle exec rake assets:precompile
      02 Yarn requires Node.js 4.0 or higher to be installed.
#<Thread:0x00007ff22d193e40 /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:10 run> terminated with exception (report_on_exception is true):
Traceback (most recent call last):
    13: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
    12: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `run'
    11: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `instance_exec'
    10: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:17:in `block (4 levels) in <top (required)>'
     9: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:92:in `within'
     8: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:18:in `block (5 levels) in <top (required)>'
     7: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:100:in `with'
     6: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:29:in `block (6 levels) in <top (required)>'
     5: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:80:in `execute'
     4: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `create_command_and_execute'
     3: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `tap'
     2: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `block in create_command_and_execute'
     1: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/netssh.rb:170:in `execute_command'
/Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/command.rb:97:in `exit_status=': ls exit status: 2 (SSHKit::Command::Failed)
ls stdout: Nothing written
ls stderr: ls: cannot access '/srv/passwords-staging/releases/20210917211125/assets_manifest_backup': No such file or directory
    8: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
    7: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `run'
    6: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `instance_exec'
    5: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:17:in `block (4 levels) in <top (required)>'
    4: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:92:in `within'
    3: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:18:in `block (5 levels) in <top (required)>'
    2: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:100:in `with'
    1: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:29:in `block (6 levels) in <top (required)>'
/Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:29:in `rescue in block (6 levels) in <top (required)>': PrecompileRequired (PrecompileRequired)
    14: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:12:in `block (2 levels) in execute'
    13: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `run'
    12: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:31:in `instance_exec'
    11: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:17:in `block (4 levels) in <top (required)>'
    10: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:92:in `within'
     9: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:18:in `block (5 levels) in <top (required)>'
     8: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:100:in `with'
     7: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:19:in `block (6 levels) in <top (required)>'
     6: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/capistrano-faster-assets-1.1.0/lib/capistrano/tasks/faster_assets.rake:68:in `rescue in block (6 levels) in <top (required)>'
     5: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:80:in `execute'
     4: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `create_command_and_execute'
     3: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `tap'
     2: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/abstract.rb:148:in `block in create_command_and_execute'
     1: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/backends/netssh.rb:170:in `execute_command'
/Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/command.rb:97:in `exit_status=': rake exit status: 1 (SSHKit::Command::Failed)
rake stdout: Nothing written
rake stderr: Yarn requires Node.js 4.0 or higher to be installed.
    1: from /Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:11:in `block (2 levels) in execute'
/Users/dev/.rvm/gems/ruby-2.7.2/gems/sshkit-1.21.2/lib/sshkit/runners/parallel.rb:15:in `rescue in block (2 levels) in execute': Exception while executing as passwords@sedlmair.ch: rake exit status: 1 (SSHKit::Runner::ExecuteError)
rake stdout: Nothing written
rake stderr: Yarn requires Node.js 4.0 or higher to be installed.
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as passwords@sedlmair.ch: rake exit status: 1
rake stdout: Nothing written
rake stderr: Yarn requires Node.js 4.0 or higher to be installed.


Caused by:
SSHKit::Command::Failed: rake exit status: 1
rake stdout: Nothing written
rake stderr: Yarn requires Node.js 4.0 or higher to be installed.


Caused by:
PrecompileRequired: PrecompileRequired


Caused by:
SSHKit::Command::Failed: ls exit status: 2
ls stdout: Nothing written
ls stderr: ls: cannot access '/srv/passwords-staging/releases/20210917211125/assets_manifest_backup': No such file or directory

Tasks: TOP => deploy:assets:precompile
(See full trace by running task with --trace)
The deploy has failed with an error: Exception while executing as passwords@sedlmair.ch: rake exit status: 1
rake stdout: Nothing written
rake stderr: Yarn requires Node.js 4.0 or higher to be installed.


** DEPLOY FAILED
** Refer to log/capistrano.log for details. Here are the last 20 lines:


 DEBUG [5db32273] Running ~/.rvm/bin/rvm 2.7.2 do bundle check as passwords@sedlmair.ch

 DEBUG [5db32273] Command: cd /srv/passwords-staging/releases/20210917211320 && ~/.rvm/bin/rvm 2.7.2 do bundle check

 DEBUG [5db32273]   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`.

 DEBUG [5db32273]   The Gemfile's dependencies are satisfied

 DEBUG [5db32273] Finished in 1.177 seconds with exit status 0 (successful).

  INFO The Gemfile's dependencies are satisfied, skipping installation

 DEBUG [01c835ec] Running if test ! -d /srv/passwords-staging/releases/20210917211320; then echo "Directory does not exist '/srv/passwords-staging/releases/20210917211320'" 1>&2; false; fi as passwords@sedlmair.ch

 DEBUG [01c835ec] Command: if test ! -d /srv/passwords-staging/releases/20210917211320; then echo "Directory does not exist '/srv/passwords-staging/releases/20210917211320'" 1>&2; false; fi

 DEBUG [01c835ec] Finished in 0.225 seconds with exit status 0 (successful).

 DEBUG [17c736a8] Running /usr/bin/env ls -xr /srv/passwords-staging/releases as passwords@sedlmair.ch

 DEBUG [17c736a8] Command: cd /srv/passwords-staging/releases/20210917211320 && ( export RAILS_ENV="staging" ; /usr/bin/env ls -xr /srv/passwords-staging/releases )

 DEBUG [17c736a8]   20210917211320  20210917211125  20210917124038  20210917123113  20210917123012

20210917122443  20210917115628  20210917115208  20210917114621

 DEBUG [17c736a8] Finished in 0.239 seconds with exit status 0 (successful).

  INFO [e1420513] Running /usr/bin/env ls /srv/passwords-staging/releases/20210917211125/assets_manifest_backup as passwords@sedlmair.ch

 DEBUG [e1420513] Command: cd /srv/passwords-staging/releases/20210917211320 && ( export RAILS_ENV="staging" ; /usr/bin/env ls /srv/passwords-staging/releases/20210917211125/assets_manifest_backup )

 DEBUG [e1420513]   ls: cannot access '/srv/passwords-staging/releases/20210917211125/assets_manifest_backup': No such file or directory

  INFO [02b44f15] Running ~/.rvm/bin/rvm 2.7.2 do bundle exec rake assets:precompile as passwords@sedlmair.ch

 DEBUG [02b44f15] Command: cd /srv/passwords-staging/releases/20210917211320 && ( export RAILS_ENV="staging" ; ~/.rvm/bin/rvm 2.7.2 do bundle exec rake assets:precompile )

 DEBUG [02b44f15]   Yarn requires Node.js 4.0 or higher to be installed.

MacBook: ~/projects-priv/passwords.rails$ 
chmich
  • 834
  • 9
  • 20

1 Answers1

5

Found the soulution

its in this ticket, Answer from Delameko

in .bashrc, i moved the nvm part that exports the PATH to the top, above the part that returns if it not interactive shell

now yarn works.

# load nvm always
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
#export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"
export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH"


# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac
chmich
  • 834
  • 9
  • 20
  • Thanks a lot! Hint: `If you do any exporting after "case $- in", it will not be reached by Capistrano.` – mahfuz Aug 17 '23 at 23:18