我正在构建一个VS代码扩展,它作为过程的一部分运行git谴责。
我读到可以使用Node的API从JavaScript执行命令行命令,使用如下所示的子过程:
var exec = require('child_process').exec;
exec(`ls`
function (error, stdout, stderr) {
console.log('stdout: ' + stdout);
console.log('stderr: ' + stderr);
if (error !== null) {
console.log('exec error: ' + error);
}
});运行这个非常简单的ls命令会在控制台中打印出目录。
但是,当我用exec替换exec(ls (git blame -L ${startLine},${endLine} extension.ts)时,它说我不在git存储库中。请注意,从我的实际终端执行git that命令确实有效。
我也试着用sudo运行命令。它会抛出错误
sudo:需要一个终端来读取密码;要么使用-S选项从标准输入读取,要么配置一个askpass助手sudo:需要密码。
/private/var/folders/th/40j77cv1587_zndgl34g0m100000gn/T/AppTranslocation/C0CFF9C7-F5C7-4C37-B7BD-1990096D4E41/d/Visual Studio Code.app/Contents/Resources/app/out/bootstrap-fork.js:5
我能做些什么才能让它发挥作用?
发布于 2022-02-26 19:45:51
结果是Node的子进程运行的是根目录上的命令,而不是工作目录。
由于我正在开发VS代码扩展,所以var currentlyOpenTabfilePath = vscode.window.activeTextEditor?.document.uri.fsPath; 解决了它.
值得一提的是,我尝试了不同的事情,但没有奏效。这些措施是:
https://stackoverflow.com/questions/71271884
复制相似问题