2

capistrano を使用して node.js アプリケーションをデプロイしていますが、シェル タスクの設定に問題があります。たとえば、npm がインストールされていると思ったら、これは失敗します。

run "npm install" npmが見つかりません

そして私が使うとき

run "/opt/nvm/'cat /opt/nvm/alias/default'/bin/npm install" エラーはノードが見つかりません

デプロイは、デプロイ専用のユーザーによって管理されます。

この問題の原因と解決方法を教えてください。

4

5 に答える 5

3

NVMCapistranoの使用は、コマンドを実行して最初にファイルbashを取得することで機能します。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からエイリアスファイルを読み取ってバイナリへのパスを手動で設定する必要はありません。

于 2013-02-17T22:24:33.227 に答える
2

Capistrano スクリプトを実行しているリモート ユーザーの $PATH に npm/node 実行可能ファイルがないようです。

Capistrano を実行しているユーザーと $PATH を再確認する必要があります (必要に応じて修正します)。

于 2011-09-05T02:20:15.207 に答える
1

私は最終的にこれを私のCapfile

set :default_environment, {
  'PATH' => "$PATH:/usr/local/ruby/bin/:/home/ubuntu/.nvm/v0.10.21/bin"
}
于 2013-12-06T10:39:51.060 に答える
0

それまでの間 (1 年以上前)、nvm を簡単に使用できるように Capistrano 拡張機能を作成しました: 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}
于 2015-03-31T10:04:07.263 に答える