2014-09-21 330 views
1

我试图安装one of my own packages如下NPM从git仓库安装失败,ENOENT

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添加任何内容。我其实试过在早期版本上安装这个软件包,它运行良好,所以我只是不明白发生了什么问题。

不用说,这一切都很令人沮丧。还有什么事情我只是没有看到?

+0

你是否设法解决这个问题? – 2017-02-13 13:17:51

+0

我不记得如何,我很害怕。但下面的第二个答案可能有帮助? – GTF 2017-02-15 14:25:54

+0

不行。尽管 – 2017-02-15 14:33:45

回答

0

这很可能是一个身份验证问题。您应该将--verbose添加到安装命令以获取更多输出。在详细运行时,您应该在控制台输出中看到以下行:

npm ERR! git clone [email protected]:gfarrell/state.js权限被拒绝(publickey)。

检查,如果您使用以下命令验证到Github上:

ssh -T [email protected] 

当你正确验证,你应该看到下面的输出:

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

Github对SSH keys以及如何解决common errors有很好的指导。

解决您的Github上的身份验证和故宫安装将开始工作。

+1

我已经通过Github验证(但为了防万一),所以这不是问题。详细标志没有多大帮助,它标识github上的git repo,但只是告诉我'npm ERR! addLocal无法安装gfarrell/state.js'。 – GTF 2014-09-21 14:49:45

0

我自己也有类似的问题。由于详细输出的最后一行“ok”行以“addRemoteGit”开头,因此我将该问题追溯到npm源文件cache.js(v1.4.9中,现在已移至add-remote-git.js)中名为addRemoteGit的函数中, 。通过添加电话log.verbose(p),我发现npm无法写入~/.npm/_git-remotes/

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

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