我正在处理一个vscode扩展,它需要执行一个外部程序来执行不同的任务。如果外部程序没有参数:UI pop。使用cmd行参数:cmd行模式。我已经使用electron构建了这个应用程序,它在调试和在cmd行上使用electron启动时运行良好。这是一个包裹。exe在Windows上运行,在命令行或直接双击命令行中也同样有效。
当我试图用child_进程从我的vscode扩展执行它时,事情变得糟糕了。执行文件。我只是放置了exe路径,而进程保持在任务监视器中(没有UI)。我放置了一些cmd行参数:node reply:bad选项。我试着在一个工具内运行它。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");
});
注意:例如,如果我使用exec启动它,使用C#中的Visual Studio生成的普通可执行文件的代码就可以很好地工作。我们只是想将electron与JS结合使用,让团队感觉宾至如归。
尝试vscode。环境。openExternal(vscode.Uri.file(filePath))
有两件事可以帮助你:
>
当您将命令行选项传递给打包的电子应用程序时,您需要在任何其他选项之前追加--
。这向电子发出信号,这些命令行选项实际上是为您的应用程序而设计的,而不是电子/节点可执行文件
exampleApp。exe--yourOption1
其次,您正在尝试使用儿童rocess.exec文件()生成一个同步进程。儿童rocess.exec文件()也有一些已知的安全问题,这就是为什么您应该避免它。相反,对于启用的进程间通信,可以使用异步rocess.spawn()甚至是rocess.fork()。这是一篇优秀的文章,它更详细地介绍了儿童过程的不同方法。
我遇到了同样的问题。我搜索了很长时间的解决方案,最后我找到了这个页面,它表明这是vscode进程的问题environment.so你应该用这种模式创建新的进程:
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/任务。json
在扩展项目中:
"version":"your version"
"options": {
"env":{//add this element
}
},
...
...
希望它能起作用!
我正在做一个项目,该项目将有许多JavaFX应用程序,这些应用程序具有相似但又足够不同的功能,因此我创建了一个抽象基类来扩展Application以处理常见的功能并指示它们需要做什么,还创建了一系列具体的类来扩展这些功能。然而,当我试图跑的时候,我得到 应用程序构造函数java.lang.Reflect.InvocationTargetException位于java.base/jdk.intern
Rexx(重构的扩展执行程序)旨在成为脚本语言。 它的目标是使脚本尽可能简单,快速,可靠和无错误。 许多编程语言旨在与旧语言兼容,并针对特定受众或平台编写。
Node.js以单线程模式运行,但它使用事件驱动的范例来处理并发。 它还有助于创建子进程,以便在基于多核CPU的系统上利用并行处理。 子进程总是有三个流child.stdin , child.stdout和child.stderr ,它们可以与父进程的stdio流共享。 Node提供了child_process模块,该模块具有以下三种创建子进程的主要方法。 exec - child_process
/library/frameworks/mono.framework/external/xbuild/xamarin/android/xamarin.android.common.targets:错误:执行任务生成器时出错JavaStubs:应用程序不能同时具有[Application]属性和[assembly:Application]属性的类型。(MyApp.Droid) 如果I applica
目的 使用部署配置来部署多个 Pod,并以此扩展缩放应用。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 创建工程1. CLI 登录到 OCP $ oc login https://master.example.com:8443 -u admin -p admin2. 创建工程 $ oc new-project lab08 创建一个新应用,测试缩放1. 创
问题内容: 我有一个用Swift编写的应用程序(简称MyApp),其目标如下: :主要目标 :一个目标,用于为应用及其扩展程序(主要是API后端和数据库处理)之间共享的代码构建框架 :使用框架的Today View小部件(或现在称为的小部件)。 该框架链接到使用它的每个目标,即和。输入Cocoapods:我以前具有以下Podfile结构: 这里的目的是仅将框架公开给其他部分,而不是将其所有pod