cap"没有这样的文件或目录/ usr / bin / env npm"虽然它确实在这里

时间:2014-12-08 11:29:46

标签: npm capistrano

运行任务时,我遇到了这个奇怪的cap错误:

INFO[f0017d58] Running /usr/bin/env npm install --silent on default
DEBUG[f0017d58] Command: cd /var/www/myapp/releases/20141208112620 && /usr/bin/env npm       install --silent
DEBUG[f0017d58]     /usr/bin/env:
DEBUG[f0017d58]     npm
DEBUG[f0017d58]     : No such file or directory
DEBUG[f0017d58]
cap aborted!

当我通过ssh登录时,其工作正常(使用相同的用户):

vagrant@localhost:~$ cd /var/www/myapp/releases/20141208112620 && /usr/bin/env npm    install --silent
grunt-contrib-uglify@0.3.3 node_modules/grunt-contrib-uglify
├── grunt-lib-contrib@0.6.1 (zlib-browserify@0.0.1)
├── chalk@0.4.0 (has-color@0.1.7, ansi-styles@1.0.0, strip-ansi@0.1.1)
└── uglify-js@2.4.15 (uglify-to-browserify@1.0.2, async@0.2.10, optimist@0.3.7, source-map@0.1.34)

所以我无法识别出一些奇怪的东西。

感谢您的帮助。


编辑:是的,我发现了实际问题的根源。 当我登录(通过vagrant ssh)时,我获得了与cap获得的env不同的环境。 基本上我可以在登录时从CLI调用npm,这将在/usr/local/node/node-default/bin/npm中找到它,而cap则不能,因为这些都不在它正在使用的路径中(或类似的东西)那)

1 个答案:

答案 0 :(得分:0)

在fixe下面解决了这个问题

deploy.rb

set :nvm_node, 'v8.9.1'

set :nvm_map_bins, %w{node npm}

的Gemfile

gem 'capistrano-nvm'

Capfile

require 'capistrano/nvm'