我尝试使用此capistrano脚本将我的webpackered rails应用程序部署到AWS,
namespace :webpacker do
task :install do
on roles(:web) do
within release_path do
execute "bin/yarn"
end
end
end
end
after 'bundler:install', 'webpacker:install'
但是我得到了以下日志,部署失败了。
INFO [74b2160e] Running /usr/bin/env bin/yarn as webmaster@example.com
DEBUG [74b2160e] Command: cd /data/example/releases/20170324031517 && ( export PATH="/usr/local/bin:$PATH" RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.4.0" NODENV_ROOT="/usr/local/nodenv" NODENV_VERSION="7.0.0" ; /usr/bin/env bin/yarn )
DEBUG [74b2160e] Node version 0.10.48 is not supported, please use Node.js 4.0 or higher.
所以,我使用ssh作为webmaster
来确认env是否正确遵循shell命令。
which node
/usr/local/nodenv/shims/node
node --version
v7.0.0
which yarn
/usr/bin/yarn
yarn --version
0.21.3
我认为env变量不正确,但不知道为什么env变量不正确。
你会教我如何解决这个问题吗?
Node version 0.10.48 is not supported, please use Node.js 4.0 or higher
添加append :nodenv_map_bins, 'bin/yarn'
后,会出现另一个问题。
INFO [aab774c8] Running NODENV_ROOT=/usr/local/nodenv NODENV_VERSION=7.0.0 /usr/local/nodenv/bin/nodenv exec bin/yarn as webmaster@example.com
DEBUG [aab774c8] Command: cd /data/example/releases/20170324175015 && ( export PATH="/usr/local/bin:$PATH" RBENV_ROOT="/usr/local/rbenv" RBENV_VERSION="2.4.0" NODENV_ROOT="/usr/local/nodenv" NODENV_VERSION="7.0.0" RAILS_ENV="staging" ; NODENV_ROOT=/usr/local/nodenv NODENV_VERSION=7.0.0 /usr/local/nodenv/bin/nodenv exec bin/yarn )
DEBUG [aab774c8] nodenv: bin/yarn: command not found
答案 0 :(得分:0)
问题似乎是您正在使用Nodenv。 Capistrano在非登录,非交互式shell中运行:http://capistranorb.com/documentation/advanced-features/ptys/因此,Capistrano使用系统节点,而不是.bash_profile
中的被覆盖版本。
这意味着您可能需要将Nodenv脚本作为运行命令的一部分进行评估。值得庆幸的是,看起来有一个宝石:https://github.com/platanus/capistrano-nodenv
您可能需要将bin/yarn
添加到:nodenv_map_bins
。类似的东西:
append :nodenv_map_bins, 'bin/yarn'
答案 1 :(得分:0)
您需要在路径中添加纱线或创建别名。