github ssh公共密钥没有find与node.js child_process.spawn()在Windows上,但在child_process.exec()可见

此代码适用于Windows和Mac OS X:

var exec = require( 'child_process' ).exec exec( 'git clone git@github.com:user/myrepo.git' ) 

但是这个代码在Windows上运行时会返回一个来自git的“Access denied(publickey)”错误,但是在Mac OS X上却不会:

 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命令可以直接在命令提示符下input时在Windows上正常工作。

任何明显的错误?

不是一个节点的问题,而是一个git问题。 在Windows上从1.7.11升级到1.8.3和产卵工作。

我想环境variables会丢失在一个经典的node.js spaw()函数中,尤其是HOME (在Windows中并不是默认定义的,并且是sshfind它的键所必需的)

也许像双赢的产卵会更好的工作:

node.js但无论您使用的是哪种操作系统,都可以工作。 如果你想使用一个JavaScript文件产卵,使用这个。

它通过在Windows上显式调用节点来工作。
它也通过试图用正则expression式parsing命令来缓冲对环境variables设置的支持
由于所有修改都包含在if (os === 'Windows_NT') ,因此可以安全地在非Windows系统上使用,不会破坏任何内容。