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系统上使用,不会破坏任何内容。
- sinon:如何模拟从另一个函数返回的函数
- 我创build了一个新的节点项目,package.json没有上传到Git
- 无法检测到设置buildpack https://github.com/jasonswett/heroku-buildpack-nodejs
- 增加成功构buildNPM / Grunt版本 – 竹子
- 在ESlint中执行“换行样式”规则有多重要? 我可以把它关掉吗?
- 如何在Mac Pro上以pipe理员身份运行terminal
- npm通过package.json中的依赖来安装private git + ssh版本库
- Heroku推送失败
- GIT:生成的.bin符号链接阻止添加node_modules回购