Node.js 使Capistrano运行shell任务时出现问题(节点部署)
我正在使用capistrano部署node.js应用程序,并且有一个 设置shell任务时出现问题。 例如,我想我已经安装了npm,但它失败了: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
运行“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似乎路径到节点存在。你还有其他建议吗?提前感谢这是远程用户?这是服务器上的用户。