我正试图弄清楚通过capistrano任务运行此命令时出现了什么问题。如果我直接在服务器上运行它,它运行得很好:
desc 'Run npm install on remote server'
task :npm_install do
on roles(:app) do
puts '**** NPM INSTALL ****'
execute "cd /var/www/#{fetch(:application)}/current/hapi && NODE_ENV=#{fetch(:env)} npm install"
end
end
错误对没有多大帮助
$ cap prod deploy:npm_install
**** NPM INSTALL ****
INFO [23ed2aa2] Running /usr/bin/env cd /var/www/myapp/current/hapi && NODE_ENV=prod npm install as myuser@123.456.789.101
(Backtrace restricted to imported tasks)
cap aborted!
SSHKit::Runner::ExecuteError: Exception while executing as myuser@123.456.789.101: cd /var/www/myapp/current/hapi && NODE_ENV=prod npm install exit status: 1
cd /var/www/myapp/current/hapi && NODE_ENV=prod npm install stdout: Nothing written
cd /var/www/myapp/current/hapi && NODE_ENV=prod npm install stderr: Nothing written
SSHKit::Command::Failed: cd /var/www/myapp/current/hapi && NODE_ENV=prod npm install exit status: 1
cd /var/www/myapp/current/hapi && NODE_ENV=prod npm install stdout: Nothing written
cd /var/www/myapp/current/hapi && NODE_ENV=prod npm install stderr: Nothing written
Tasks: TOP => deploy:npm_install
(See full trace by running task with --trace)
有什么方法可以为通过capistrano运行的远程任务打开有用的错误消息或其他东西吗?
这篇博客文章或这个SO答案应该可以帮助您增加调试。
这个常见问题解答应该可以帮助您理解为什么Capistrano的行为与普通SSH会话不同。