簡體   English   中英

在Windows上找不到node.js child_process.spawn()的github ssh公鑰,但在child_process.exec()上可見

[英]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查找其鍵是必需的)

也許像win- spawn這樣的生成器會更好:

node.js但是無論您使用哪種操作系統,都可以使用。 如果要將spawn與JavaScript文件一起使用,請使用此選項。

它通過顯式調用Windows上的節點來工作。
它還嘗試通過使用正則表達式來解析命令,從而減少對環境變量設置的支持
由於所有修改都包含在if (os === 'Windows_NT') ,因此可以在非Windows系統上安全使用它,並且不會破壞任何內容。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM