【发布时间】:2017-11-22 22:20:41
【问题描述】:
我在 Windows 中设置了一个 HOME 环境变量以指向文件夹 C:\tom\。
当我从命令行运行 git 并调用 ssh 时,它最终会查找 ~/.ssh 文件夹或 $HOME/.ssh,并找到 C:\tom\.ssh。这方面工作正常。
另一方面,当 npm 运行 git 时,就像在尝试获取引用私有 github 存储库的依赖项时一样,ssh 似乎最终会尝试 C:\Users\tom\.ssh,也就是 %USERPROFILE%\.ssh。但是我的PC上不存在那个文件夹,所以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 修改环境,或者其他什么。
【问题讨论】:
-
npm set HOME "C:\tom" -g(全局标志) -
谢谢 - 但这并没有解决问题。
-
我猜这与 here 的逻辑有关 - 它更喜欢 USERPROFILE 而不是 HOME,但由于 USERPROFILE 是强制性的,而 HOME 是可选的,它可能应该反过来。
-
嗯好吧,它是包含这些 git 命令的打包脚本吗 - 你在命令之前尝试过overriding the environment variables。抱歉,不知道还有什么建议。
-
没有脚本...只有 package.json 中引用私有 GitHub 存储库的依赖项。我现在所做的是从 C:\Users\tom\.ssh 到 C:\tom.ssh 的连接,这是我可以容忍的。 I've also opened a GitHub issue.