VSCode远程服务器.sh在wsl docker-desktop中找不到node

8

我的环境:

VSCode v1.46.0

remote-wsl 扩展程序 v0.44.3

Windows 10 操作系统 版本号 19041.329

Docker Desktop v2.3.0.3

我尝试在 Docker Desktop 的 WSL 中打开 VSCode,但每次都出现以下错误。我已经进入了列出的目录,看到了 node 文件,但不确定该怎么做?

[2020-06-17 20:30:27.337] Resolving wsl+docker-desktop, resolveAttempt: 1
[2020-06-17 20:30:27.462] Starting VS Code Server inside WSL (docker-desktop)
[2020-06-17 20:30:27.463] Extension version: 0.44.3, Windows build: 19041. Multi distro support: available. WSL path support: enabled
[2020-06-17 20:30:27.751] Probing if server is already installed: C:\WINDOWS\System32\wsl.exe -d docker-desktop -e sh -c "[ -d ~/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321 ] && printf found || ([ -f /etc/alpine-release ] && printf alpine-; uname -m)"
[2020-06-17 20:30:28.100] Probing result: found
[2020-06-17 20:30:28.100] Server install found in WSL
[2020-06-17 20:30:28.101] Launching C:\WINDOWS\System32\wsl.exe -d docker-desktop sh -c '"$VSCODE_WSL_EXT_LOCATION/scripts/wslServer.sh" a5d1cc28bb5da32ec67e86cc50f84c67cc690321 stable .vscode-server 0  ' in c:\Users\Eric\.vscode\extensions\ms-vscode-remote.remote-wsl-0.44.3}
[2020-06-17 20:30:28.345] Setting up server environment: Looking for /root/.vscode-server/server-env-setup. Not found.
[2020-06-17 20:30:28.345] WSL version: 4.19.104-microsoft-standard docker-desktop
[2020-06-17 20:30:28.345] WSL2-shell-PID: 1036
[2020-06-17 20:30:28.345] Starting server: /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/server.sh  --port=0 --use-host-proxy --enable-remote-auto-shutdown 
[2020-06-17 20:30:28.347] /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/server.sh: line 12: /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/node: not found
[2020-06-17 20:30:28.347] VS Code Server for WSL closed unexpectedly.
[2020-06-17 20:30:28.347] For help with startup problems, go to
[2020-06-17 20:30:28.347] https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips
[2020-06-17 20:30:29.404] WSL Daemon exited with code 0

当我在WSL中打开一个窗口时,我遇到了同样的问题。我有一个远程容器窗口在同时运行,其中vs code服务器的相同代码在docker容器内部执行。所以我猜,在docker桌面发行版中缺少启动node的东西。通过指向本地node安装来替换node并没有帮助我。仍在进一步调查中。 - Matthias Wiedemann
5个回答

11
今天遇到一个非常类似的问题。VScode已经运行了很长时间,但今天突然停止了。
/home/user/.vscode-server/bin/b5afea7e86cc50f84c67cc690321/server.sh --port=0 --use-host-proxy --enable-remote-auto-shutdown
VS Code Server for WSL closed unexpectedly
在WSL控制台中,server.sh文件有些内容为空。我的解决方法是:删除WSL扩展、运行rm -rf ./vscode-server命令、重新安装WSL扩展以恢复损坏的文件。

3
问题在于,安装在WSL中的vscode-server与Docker Desktop提供的发行版不兼容。您应该使用Microsoft Store提供的官方Linux发行版,例如Ubuntu。
Docker Desktop发行版来自基于称为musl-libc的libc变体的Alpine Linux。但是,由wsl扩展安装的vscode-server是针对glibc构建的。
您可以通过在wsl中执行以下操作查看此内容: apk update && apk add binutils 然后
readelf -l /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/node | grep "program interpreter"
      [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]

但是在Alpine中,该库不存在,这就是为什么错误消息报告“未找到”的原因。

所以我想知道,为什么使用远程容器扩展程序在Alpine容器内部工作的vscode服务器。例如,使用alpine:3.9开始,上述检查显示如下:

readelf -l /root/.vscode-server/bin/a5d1cc28bb5da32ec67e86cc50f84c67cc690321/node | grep "program interpreter"
      [Requesting program interpreter: /lib/ld-musl-x86_64.so.1]

由于某些原因,远程容器扩展具有用于Alpine的检测机制,并使用了不同的vscode服务器构建。我的建议是,您可以在https://github.com/microsoft/vscode-remote-release/issues上提交此问题。 否则,请使用另一个WSL发行版或使用容器扩展。
关于此主题的一些参考资料:

1

在我的情况下,解决方法是:

  • 打开Docker for Windows设置
  • 取消选中"使用WSL 2基础引擎",然后点击"应用并重启"
  • 再次选中"使用WSL 2基础引擎",然后点击"应用并重启"

下次运行"远程WSL:新建窗口"时,它会正确连接


在更新了 Docker 后,这对我起作用了。我在 WSL 上遇到了错误“.vscode-server/server-env-setup not found”。谢谢。 - Second2None

1

我不得不重新启动WSL

wsl --shutdown
wsl

这是你所要做的_全部_吗?还是这是在现有答案之一的_补充_? - Jeremy Caney
1
这就是我需要做的全部。 - Tashi
我的工作非常完美。谢谢! - Morez

0
对我来说,问题出在我的 Debian 实例上的 /etc/wsl.conf 文件。我之前禁用了自动挂载,但这对于 WSL 扩展是必要的。所以我重新启用了它,然后问题就解决了。
[automount]
enabled = true

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接