WSL2环境Ubuntu升级后VSCode无法加载 正常运行1年出现报错
问题背景
- 运行环境:Windows 11 + WSL2(Ubuntu 20.04),使用VSCode开展开发工作1年以上
- 异常触发逻辑:此前定期执行
apt update、apt upgrade均无异常,某次执行apt upgrade后无法从WSL环境正常启动VSCode - 复现确认:回滚WSL至1个月前的可正常运行备份后,再次执行
apt update与apt upgrade,会完全复现相同报错
报错详情
执行启动VSCode相关操作时抛出Node模块找不到错误,核心报错信息如下:
node:internal/modules/cjs/loader:990 throw err; ^ Error: Cannot find module '\wsl.localhost\Ubuntu-20.04\mnt\c\Users\JimD\AppData\Local\Programs\Microsoft VS Code\Code.exe' at Function.Module._resolveFilename (node:internal/modules/cjs/loader:987:15) at Module._load (node:internal/modules/cjs/loader:832:27) at Function.c._load (node:electron/js2c/asar_bundle:5:13343) at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) at node:internal/main/run_main_module:17:47 { code: 'MODULE_NOT_FOUND', requireStack: [] }
注:你怀疑的路径前缀异常判断正确,/mnt/c/本身是WSL挂载的Windows C盘路径,额外拼接\wsl.localhost\Ubuntu-20.04前缀后路径完全非法,是触发报错的直接原因。
问题根因
本次异常是Ubuntu 20.04源中近期推送的wslu(WSL配套工具集,负责WSL与Windows侧的程序互调、路径解析逻辑)版本存在路径拼接bug:更新后的版本错误地给Windows挂载盘路径(/mnt/c/开头的路径)前面拼接了WSL自身的UNC网络路径前缀,导致调用Windows侧VSCode时路径解析失败。
修复步骤
- 回滚到无bug的
wslu版本,执行以下命令:
执行完成后直接在WSL终端输入sudo apt install --reinstall wslu=3.2.2-0ubuntu1~20.04.1code .验证,即可正常启动VSCode。 - 锁定
wslu包版本,避免后续执行apt upgrade时再次安装带bug的版本:sudo apt-mark hold wslu - 后续等Ubuntu官方源推送修复了路径bug的
wslu版本后,执行sudo apt-mark unhold wslu即可解除版本锁定,恢复正常包更新流程。
内容的提问来源于stack exchange,提问作者Jim D
相关产品推荐
相关产品推荐

