【问题标题】:npm install from git repo fails with ENOENT从 git repo 安装 npm 失败并显示 ENOENT
【发布时间】:2014-09-21 12:55:17
【问题描述】:

我正在尝试按如下方式安装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 添加任何内容。我实际上尝试在早期版本上安装这个包,它运行良好,所以我只是不明白出了什么问题。

不用说,这一切都相当令人沮丧。还有什么我没看到的吗?

【问题讨论】:

  • 你解决了吗?
  • 我不记得怎么做了,恐怕。但是下面的第二个答案可能会有所帮助?

标签: node.js github installation npm


【解决方案1】:

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

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

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

ssh -T git@github.com

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

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

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

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

【讨论】:

  • 我已经通过 Github 的身份验证(但检查以防万一)所以这不是问题。详细标志没有多大帮助,它在 github 上标识了 git repo,但只是告诉我npm ERR! addLocal Could not install gfarrell/state.js
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2021-11-04
    • 1970-01-01
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多