问题:如何使用node.js
从passphrase
投放git push
。
我正在尝试构建一个小模块,我需要从node.js
运行repo
到远程node.js exec
,但是当我使用{{{}时,我收到错误1}}但不是来自终端。
我的代码。
./command.ts
import * as util from 'util';
const exec = util.promisify(require('child_process').exec);
export default function command(command: string): Promise<string> {
return exec(command, {cwd: process.cwd()}).then((resp) => {
const data = resp.stdout.toString().replace(/[\n\r]/g, '');
return Promise.resolve(data);
});
}
./index.ts
import command from './command';
async function init() {
try {
await command('git add .');
await command('git commit -m "my commit" ');
conat result = await command('git push');
} catch (e) {
console.log(e);
}
}
init();
当我运行ts-node ./index.ts
时,我收到以下错误。
Error: Command failed: git push
git@hostname.org: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
但是,当我从终端运行git push
时,我会收到密码短语的提示并且有效。
有关如何解决此问题的任何想法,有没有办法使用git push
使用密码短语运行node.js
?
请记住,我很乐意在没有任何外部库的情况下解决这个问题。
提前致谢。
答案 0 :(得分:0)
作为described here,在以下情况下检查相同的程序是否有效:
不仅提示不应再查询您的密码(现在由代理缓存),而且您的脚本也可能从该缓存中受益。
答案 1 :(得分:0)
如果您的密钥已加载到ssh-agent进程中,则可能需要将env: process.env
添加到exec()
选项中。有一些环境变量ssh-agent导出,其他进程使用它来查找ssh-agent来访问其密钥。