来自git repo的npm install因ENOENT而失败

时间:2014-09-21 12:55:17

标签: node.js github install npm

我正在尝试安装one of my own packages,如下所示

npm install --save gfarrell/state.js

我收到以下错误(full log here):

npm ERR! addLocal Could not install gfarrell/state.js
npm ERR! Error: ENOENT, stat 'gfarrell/state.js'
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Darwin 13.4.0
npm ERR! command "node" "/usr/local/bin/npm" "install" "--save" "gfarrell/state.js"
npm ERR! cwd /Users/gideon/Code/PresenceMonitor
npm ERR! node -v v0.10.28
npm ERR! npm -v 1.4.10
npm ERR! path gfarrell/state.js
npm ERR! code ENOENT
npm ERR! errno 34
npm ERR! 
npm ERR! Additional logging details can be found in:
npm ERR!     /Users/gideon/Code/PresenceMonitor/npm-debug.log
npm ERR! not ok code 0

现在我已尝试various solutions,包括:

  • npm cache clean
  • sudo npm cache clean
  • rm -rf ~/.npm
  • sudo npm install --save gfarrell/state.js
  • npm install --save git://github.com/gfarrell/state.js.git

但没有改变错误输出。我无法看到该模块的package.json有什么问题,而且我还没有向我的本地package.json添加任何内容。我实际上尝试在早期版本上安装此软件包并且工作正常,所以我只是不明白出了什么问题。

毋庸置疑,这一切都令人沮丧。还有其他事情我还没看到吗?

2 个答案:

答案 0 :(得分:0)

这很可能是身份验证问题。您应该将--verbose添加到install命令以获得更多输出。运行详细信息时,您应该在控制台输出中看到此行:

  

npm ERR! git clone git@github.com:gfarrell / state.js权限被拒绝(公钥)。

使用以下命令检查您是否通过Github身份验证:

ssh -T git@github.com

正确验证后,您应该看到以下输出:

  

嗨gfarrell!您已成功通过身份验证,但GitHub不提供shell访问权限。

Github有一个关于SSH keys的精彩指南以及如何解决common errors

修复您的Github身份验证,npm安装将开始工作。

答案 1 :(得分:0)

我自己也遇到过类似的问题。因为最后一次&#34; ok&#34;详细输出的行以&#34; addRemoteGit&#34;开头,我将问题追溯到addRemoteGit源文件 cache.js 中的npm函数v1.4.9,它现在已被移入add-remote-git.js)。通过添加对log.verbose(p)的调用,我发现npm无法写入~/.npm/_git-remotes/

基本上这是一个权限问题:我的~/.npm目录包含文件&amp; root拥有的目录。我只是通过运行解决了这个问题:

sudo find ~/.npm -exec chown $USER:$USER {} \;