在运行git时,如何让npm正确设置HOME环境变量?

时间:2017-06-20 11:33:28

标签: node.js git ssh npm

我在Windows中设置了HOME环境变量,指向文件夹C:\tom\

当我从命令行运行git并调用ssh时,它最终会查找~/.ssh文件夹或$HOME/.ssh,并找到C:\tom\.ssh。这方面的工作正常。

当npm运行git时,另一方面,当尝试获取引用私有github repo的依赖时,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修改环境,或者别的什么。

1 个答案:

答案 0 :(得分:0)

如您所见,npm 在 Windows 系统上将 $HOME 设置为 $USERPROFILE。

在 Windows 上使用 bash 执行时,让 npm 使用正确的 $HOME 值的一种方法是将 USERPROFILE 设置为 $HOME 的值:

export USERPROFILE=$HOME