gpt4 book ai didi

node.js - 在 vscode 扩展中执行 Electron 应用程序

转载 作者:搜寻专家 更新时间:2023-10-31 23:44:45 25 4
gpt4 key购买 nike

我正在开发一个 vscode 扩展,它需要执行一个外部程序来完成不同的任务。如果外部程序没有参数:UI pop。使用 cmd 行参数:cmd 行模式。我已经使用 electron 构建了这个应用程序,它在调试和在 cmd 行上使用 electron 启动它时运行良好。它在 Windows 上被打包为 .exe,在 cmd 行或直接双击它时同样有效。

当我尝试使用 child_process.execFile 从我的 vscode 扩展执行它时,事情变得很糟糕。我只是放了exe路径,进程停留在任务监视器中(没有UI)。我输入了一些 cmd 行参数: Node 回复:错误选项。我尝试在 tools.bat 文件中运行它,以便调用 bat。也不行。我试过 fork、spawn、exec。相同的行为。

启动代码:

      const childProcess = child.execFile(pathToExec, [], { cwd: execDir, env: process.env, });

childProcess.stdout.on('data', (data) => {
console.log(data.toString());
});
childProcess.stderr.on('data', (data) => {
console.log(data.toString());
});
childProcess.on("exit", () => {
console.log("exit");
});

注意:例如,使用 C# 中的 Visual Studio 构建具有正常可执行文件的相同代码,如果我使用 exec 启动它,效果很好。我们只是想将 Electron 与 JS 结合使用,让团队有宾至如归的感觉。

最佳答案

我遇到了同样的问题。我搜索了很长时间的解决方案,最后我找到了this page ,说明是vscode进程环境的问题,所以应该用这种方式新建进程:

var spawn_env = JSON.parse(JSON.stringify(process.env));
console.log(process.env);
delete spawn_env.ATOM_SHELL_INTERNAL_RUN_AS_NODE;
delete spawn_env.ELECTRON_RUN_AS_NODE;
var spawn = require('child_process').spawn;
spawn(cmd,[],{env:spawn_env,detached:true});

如果不行,请修改你的扩展项目中的.vscode/tasks.json:

"version":"your version"
"options": {
"env":{//add this element
}
},
...
...

希望它能奏效!

关于node.js - 在 vscode 扩展中执行 Electron 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51428982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com