Node.js 使Capistrano运行shell任务时出现问题(节点部署)

Node.js 使Capistrano运行shell任务时出现问题(节点部署),node.js,capistrano,npm,Node.js,Capistrano,Npm,我正在使用capistrano部署node.js应用程序,并且有一个 设置shell任务时出现问题。 例如,我想我已经安装了npm,但它失败了: 运行“npm安装” 未找到npm 当我使用 run”/opt/nvm/'cat/opt/nvm/alias/default'/bin/npm安装“ 找不到错误节点 部署由用于部署的特殊用户管理 您能告诉我是什么原因导致此问题以及如何解决此问题吗?对于正在执行Capistrano脚本的远程用户,npm/node可执行文件似乎不在$PATH上 您应该使用N

我正在使用capistrano部署node.js应用程序,并且有一个 设置shell任务时出现问题。 例如,我想我已经安装了npm,但它失败了:

运行“npm安装”
未找到npm

当我使用

run”/opt/nvm/'cat/opt/nvm/alias/default'/bin/npm安装“
找不到错误节点

部署由用于部署的特殊用户管理


您能告诉我是什么原因导致此问题以及如何解决此问题吗?

对于正在执行Capistrano脚本的远程用户,npm/node可执行文件似乎不在$PATH上


您应该使用NVM仔细检查哪个用户Capistrano正在作为运行,$路径是什么(并根据需要进行更正)

并且Capistrano正在通过
bash
运行命令并首先查找
NVM.sh
文件为我工作

我的NVM安装在
/opt/NVM
中,因此
npm安装任务可能如下所示:

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使用:

默认情况下,扩展将映射
节点
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}

你好@secoif,以下是用于capistrano部署的用户$PATH:/opt/nvm/v0.4.11/bin:/usr/local/rvm/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@awesomewidget/bin:/usr/local/rvm/gems/ruby-1.9.2-p290@global/bin:/usr/local/rvm/rubies/ruby-1.9.2-p290/bin:/usr/local/bin:/usr/local/bin:/usr/bin:/usr/local/games:/usr/games/games似乎路径到节点存在。你还有其他建议吗?提前感谢这是远程用户?这是服务器上的用户。