我在Windows中设置了一个指向文件夹C:\tom\
的HOME
环境变量。
当我从命令行运行git并调用ssh时,它最终查找~/.ssh
文件夹或$HOME/.ssh
,并找到C:\tom\.ssh
。这一方面的工作很好。
另一方面,当npm运行git时,当它试图获取引用私有github代码库的依赖项时,ssh似乎最终尝试了C:\Users\tom\.ssh
,也就是%USERPROFILE%\.ssh
。但是这个文件夹在我的电脑上不存在,所以ssh失败了,因为它找不到github的known_hosts
条目,最终git也失败了:
npm ERR! Command failed: git -c core.longpaths=true fetch -a origin
npm ERR! Host key verification failed.
npm ERR! fatal: Could not read from remote repository.
npm config list
生成以下内容:
; cli configs
user-agent = "npm/3.10.8 node/v6.9.1 win32 x64"
; builtin config undefined
prefix = "C:\\Users\\tom\\AppData\\Roaming\\npm"
; node bin location = C:\Program Files (x86)\nodejs\node.exe
; cwd = C:\
; HOME = C:\Users\tom
; "npm config ls -l" to show all defaults.
所以这是有道理的,大概npm的HOME设置是在运行git时在环境中通过的。所以我试了试npm config set HOME C:\tom
,希望这能解决问题。但这并没有什么不同。
我该如何解决这个问题呢?我希望ssh总是能找到C:\tom\.ssh
。我不想让它找到C:\Users\tom\.ssh
我怎样才能做到这一点呢?我不介意我必须通过调整一些设置来做到这一点,如果有一些选项可以停止npm修改环境,或者其他什么。
发布于 2021-02-18 13:29:33
正如您所发现的,npm在Windows系统上将$HOME设置为$USERPROFILE。
在Windows上使用bash执行时,让npm使用正确的$HOME值的一种方法是将USERPROFILE设置为$HOME的值:
export USERPROFILE=$HOME
https://stackoverflow.com/questions/44651928
复制相似问题