首页 > 解决方案 > 无法在 vscode 命令上下文中启动 GUI 程序

问题描述

我使用扩展 API 创建 vscode 命令来启动 GUI 程序。

vscode.commands.registerCommand('rnk.inspect', () => {
    require('child_process').exec('react-devtools', (err, stdout) => {
        console.log('result', err, stdout)
    })
});

但是当我运行这个命令时,我得到了输出:

result Error: Command failed: react-devtools
extension.js:22
    at ChildProcess.exithandler (child_process.js:287:12)
    at emitTwo (events.js:126:13)
    at ChildProcess.emit (events.js:214:7)
    at maybeClose (internal/child_process.js:925:16)
    at Socket.ChildProcess.spawn.stream.socket.on (internal/child_process.js:346:11)
    at emitOne (events.js:116:13)
    at Socket.emit (events.js:211:7)
    at Pipe.Socket._destroy.cb._handle.close [as _onclose] (net.js:554:12) 

我已经安装react-devtools了,以下代码作为独立节点应用程序工作:

const child_process = require('child_process');
child_process.exec('react-devtools');

它也可以在带有 command 的 vscode 的集成终端中正常工作react-devtools

上面的所有代码都是在 Mac 上运行的。

有什么问题?vscode 扩展中的节点环境和普通节点有什么区别吗?

标签: visual-studio-codevscode-extensions

解决方案


ELECTRON_RUN_AS_NODE通过取消设置环境变量解决的问题:

exec('react-devtools', {env: {...process.env, ELECTRON_RUN_AS_NODE:''}}, (err, stdout) => {
    console.log('result', err, stdout);
});

参考:https ://github.com/microsoft/vscode/issues/76673


推荐阅读