我正在使用capistrano部署node.js應用程序,並且在設置shell任務時遇到 問題。 例如,以爲我有NPM安裝失敗:使Capistrano運行shell任務時出現問題(nodejs部署)
run "npm install"
NPM沒有找到
,當我使用
run "/opt/nvm/'cat /opt/nvm/alias/default'/bin/npm install"
的節點沒有發現錯誤
部署由管理一個特殊的部署用戶。
請問可能會導致此問題以及如何解決它?
我正在使用capistrano部署node.js應用程序,並且在設置shell任務時遇到 問題。 例如,以爲我有NPM安裝失敗:使Capistrano運行shell任務時出現問題(nodejs部署)
run "npm install"
NPM沒有找到
,當我使用
run "/opt/nvm/'cat /opt/nvm/alias/default'/bin/npm install"
的節點沒有發現錯誤
部署由管理一個特殊的部署用戶。
請問可能會導致此問題以及如何解決它?
對於執行Capistrano腳本的遠程用戶而言,npm/node可執行文件的聲音不在$ PATH中。
你應該加倍通過bash
和採購檢查Capistrano的正在運行的用戶爲,什麼$ PATH是(根據需要修正)
使用NVM和Capistrano的爲我工作運行命令首先是nvm.sh
文件。
我NVM安裝在/opt/nvm
,所以npm install
任務可能是這個樣子:
namespace :npm do
desc 'Install the current npm environment.'
task :install do
invoke_command "bash -c '. /opt/nvm/nvm.sh && cd #{current_path} && npm install'", :via => run_method
end
end
所以不需通過讀取NVM別名文件手動設置路徑的二進制文件。
我最終加入這個我Capfile
set :default_environment, {
'PATH' => "$PATH:/usr/local/ruby/bin/:/home/ubuntu/.nvm/v0.10.21/bin"
}
在此期間(一年多背壽)我創建了一個Capistrano的擴展,易於使用的NVM:https://github.com/koenpunt/capistrano-nvm
的擴展將默認情況下,地圖node
和npm
,但您可以添加任何需要nvm運行的可執行文件(例如,grunt
)。
基本設置將通過增加上班以下到您的deploy.rb
:
require 'capistrano/nvm'
set :nvm_type, :user # or :system, depends on your nvm setup
set :nvm_node, 'v0.10.21'
set :nvm_map_bins, %w{node npm}
只是不工作!注意:我正在使用bower-rails。 – Lewisou
嗨@secoif,這裏是其用於Capistrano的部署在用戶的$ PATH: 的/ opt/NVM/V0 .4.11 /斌:在/ usr /本地/ RVM /斌:/usr/local/rvm/gems/[email protected]/bin:/usr/local/rvm/gems/ruby-1.9.2- P290 @全球/斌:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:在/ usr/local/bin目錄:在/ usr/local/bin目錄:在/ usr/bin中:/ bin中:在/ usr /本地/遊戲:/ usr/games 似乎存在節點的路徑。你有什麼其他的建議?在此先感謝 –
這是遠程用戶? – timoxley
這就是服務器上的用戶。 –