nvm_install 和主厨客户优先 运行 的问题

Problema with nvm_install and chef-client first run

我正在使用带有 nvm_install 资源的 nvm chef cookbook 来安装 nodejs 和 npm。

nvm_install 'v4.2.2' do
  from_source false
  alias_as_default true
  action :create
end

安装节点后,我尝试 运行 'npm install' 但出现此错误:

No such file or directory - npm

我试过用 "source" 来加载 nvm.sh 脚本,但是当我第一次 运行 厨师客户端时没有用。

append_if_no_line "Global .bashrc and source to nvm" do
  path "/etc/bash.bashrc"
  line "[[ -s #{node['nvm']['directory']}/nvm.sh ]] && . #{node['nvm']['directory']}/nvm.sh  # This loads NVM"
end

我的问题是,在使用 chef-client 运行ning.

安装 NVM/NODE 之后,如何 运行 NPM INSTALL

代码:

nvm_install 'v4.2.2' do
  from_source false
  alias_as_default true
  action :create
end

append_if_no_line "Global .bashrc and source to nvm" do
  path "/etc/bash.bashrc"
  line "[[ -s #{node['nvm']['directory']}/nvm.sh ]] && . #{node['nvm']['directory']}/nvm.sh  # This loads NVM"
end


execute "npm install" do
  cwd "#{PATH_CODE}"
  command "npm install"
  action :run
end

正如在 IRC 上提到的,您需要在 Chef 运行 的每个子 shell 中处理这个问题。更好的解决方案可能是使用 poise-javascript 来管理 Chef.

中的版本