[英]Cannot call `git submodule add` from via node child_process.spawn
[英]github ssh public key not found with node.js child_process.spawn() on windows, but visible on child_process.exec()
此代碼可在Windows和Mac OS X上運行:
var exec = require( 'child_process' ).exec
exec( 'git clone git@github.com:user/myrepo.git' )
但是當在Windows而非Mac OS X上運行時,此代碼從git返回“訪問被拒絕(公鑰)”錯誤:
var spawn = require( 'child_process' ).spawn
, child = spawn( 'git', [ 'clone', 'git@github.com:user/myrepo.git' ], { env: process.env } )
child.on.stderr( 'data', function( data ) {
console.log( data.toString() )
})
我以為在spawn
我失去了與~/.ssh
連接...但是我認為在process.env
發送將起作用。 順便說一句,當直接在命令提示符下鍵入時, git clone
命令在Windows上可以正常工作。
明顯有問題嗎?
不是Node問題,而是git
問題。 在Windows上將git從1.7.11升級到1.8.3,並且生成了工作。
我想環境變量在經典的node.js spaw()
函數中丟失了,尤其是HOME
(在Windows中默認未定義,而ssh查找其鍵是必需的)
為
node.js
但是無論您使用哪種操作系統,都可以使用。 如果要將spawn與JavaScript文件一起使用,請使用此選項。它通過顯式調用Windows上的節點來工作。
它還嘗試通過使用正則表達式來解析命令,從而減少對環境變量設置的支持 。
由於所有修改都包含在if (os === 'Windows_NT')
,因此可以在非Windows系統上安全使用它,並且不會破壞任何內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.