Repository navigation
桌面端「用其他应用打开工作区」对 VS Code/Cursor 等 Electron 应用必然失败(打开失败,请重试) #8304
Unanswered
KianaMirayi
asked this question in
Q&A
Replies: 1 comment
你初步定位的方向是对的——我把确切代码位置与一个今天可用的规避给你1. 代码(
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
桌面端「用其他应用打开工作区」对 VS Code/Cursor 等 Electron 应用必然失败(打开失败,请重试)
摘要
Windows 桌面端里,对工作区目录选择「VS Code」打开时 100% 报
打开失败,请重试。我初步定位到原因可能不在 VS Code:桌面端宿主进程自身带着ELECTRON_RUN_AS_NODE=1(这是 Electron 桌面壳以 Node 模式运行 dsh 运行时所必需的),而这个开关似乎会随子进程环境一路传下去,导致被启动的 Electron 应用(VS Code / Insiders / Cursor / Windsurf / Zed)以 Node 模式运行、把工作区路径当成 JS 入口文件,报Cannot find module '<路径>'并以退出码 1 结束,于是 host 把这次启动判定为失败。资源管理器、Git Bash、GitHub Desktop 不受影响(前两者走
shell-open,后者自带显式启动环境)。想请你们确认一下这个定位是否成立。
环境
0.2.0-rc.2(Windows x64,nightly 通道),签名主体CN="Hangzhou DeepSeek Artificial Intelligence Co., Ltd."@deepseek-ai/dsh-subprocess-local@0.2.0-rc.2、@deepseek-ai/dsh-subprocess@0.2.0-rc.2、@deepseek-ai/dsh-host-open-in-app@0.2.0-rc.2(npmnext标签最新版)1.139.1,安装在%LOCALAPPDATA%\Programs\Microsoft VS CodeELECTRON_RUN_AS_NODE,看起来是桌面端在启动 host 子进程时显式注入的复现步骤
E:\PoliticsLearning)打开失败,请重试实际行为
Code.exe被以 Node 模式启动:退出码
1。而 host 的启动逻辑是「看护窗口内子进程非 0 退出 ⇒ 启动失败」,所以 UI 显示打开失败,请重试。我做了隔离验证(同一台机器、同一个可执行文件,只切换这一个环境变量):
ELECTRON_RUN_AS_NODE=1Cannot find module '<工作区>'期望行为
选中 Electron 系编辑器时能正常打开对应目录。
我的推测与依据
packages/subprocess/subprocess-local/src/spawn.ts里构造子进程环境的位置:scrubbedParentEnv()按我的理解只剔除「凭据形状的名字」(/KEY|PASSWORD|SECRET|TOKEN/i)与DSH_*名字,没有剔除 Electron 的 Node 选择器,所以宿主进程的ELECTRON_RUN_AS_NODE=1会进入每个被派生的子进程环境,再由dsh-host-open-in-app的launchDetachedApp原样交给被启动的应用。另外我注意到同一份代码在另一条路径上已经处理过这个开关(PTC runtime 会显式过滤
ELECTRON_RUN_AS_NODE),只是那处处理似乎没有覆盖到childEnv()这条公共路径——这是否属于有意为之,想请你们判断。想请你们确认:这个推测是否正确?如果正确,在
childEnv()里补一行是否是可接受的修法?我担心的点是它会不会影响真正需要 Node 模式的调用方——不过我看到的几处(桌面端语音 worker、PTC runtime bootstrap、桌面端 pnpm 工具)都是显式传入该变量,而显式合并发生在这个删除之后,所以应该不受影响。这点也请你们把关。
如果这个开关不该在
childEnv()层处理,而是应该修在别处(例如只在启动外部应用时剥离),也请指个方向。补充证据
shell-open路径)、GitHub Desktop(自带env: { ELECTRON_RUN_AS_NODE: "1" }显式启动其 CLI)dsh-subprocess-local/lib/runner-launch-B2zsQ1Dz.js(57,475 字节)与 npm 上@deepseek-ai/dsh-subprocess-local@0.2.0-rc.2的同名产物:逐字节完全相同,因此这应该是发布产物的原始行为,而不是本地改动或环境差异造成的All reactions