收起左侧

code-server常见问题与解决方案

0
回复
19
查看
[ 复制链接 ]

9

主题

78

回帖

0

牛值

系统先锋体验团🛩️

前言

自从按触了code-server,感觉这个就是坑好多的问题,但这些问题其实都是可以解决的,它可以做到与本地vscode一样的体验与功能。

常见问题

1、想用桌面Vscode的Remote-SSH连接飞牛开发fpk,但是连接不上

关键是缺少了用户家目录,用ssh连接,执行下面命令修复,注意其中abc用户名,要换成自己的:

# 新建家目录
sudo mkdir -p /home/abc
# 修改家目录所有者为abc
sudo chown -R abc:Users /home/abc
# 修改家目录权限为700
sudo chmod 700 /home/abc

若出现下面的错误,那是飞牛1.2.0203版本关闭了tcp转发,

ERROR: TCP port forwarding appears to be disabled on the remote host. Ensure that the sshd_config has `AllowTcpForwarding yes`. Contact your system administrator if needed.

执行下面命令修复:

# 覆写默认配置,或者是nano修改no成yes
echo "AllowTcpForwarding yes" | sudo tee /etc/ssh/sshd_config.d/trim_sshd.conf
# 重启ssh服务
sudo systemctl restart sshd

这样就可用Remote-SSH连接飞牛来开发了。


2、为什么code-server能用的插件很少,找不到想要的插件

那是因为vscode是开源的,但对于它的插件是不开源,而且规定了不是官方的就不能使用它的官方源,所有有两种办法,第一种是手动去桌面Vscode下载VSIX插件上传到飞牛上安装,第二种是直接修改成官方的源,请下面教程进行修改:

如何在Vscode-server上使用C/C++插件

code-server 使用 vscode 官方插件仓库


3、code-server 提示The workbench failed to connect to the server(Error: WebSocket close with status code 1006),连接不上怎么办

这个问题确是坑惨我了,但也是研究明白了,其中这个1006最大的问题是Websocket的代理问题,code-server有一个安全校验机制,也就是请求头的Origin 和 Host 不一致时,就会直接掐断了连接报1006错误,一个是让 Host 和 Origin 完美匹配,要么是设置X-Forwarded-Proto与X-Forwarded-Host这两个请求头,优先信任 X-Forwarded-Host 来判断“真实 Host”,这样就可以连接的上了,而官方商店的docker版本的Vs code为什么用飞牛app来连接也是这个问题,请参考下面进行修复:

论飞牛统一网关转发层,解决code-server中WebSocket连接失败问题

第三方应用接入飞牛统一网关(golang中间层)

统一网关版code-server


4、code-server查看不了图片,有些插件会出打不开界面的情况

code-server is being accessed in an insecure context. Web views, the clipboard, and other functionality may not work as expected.

这就是webview的问题,首先声明code-server是支持webview的,那为什么加载不出来,原因是VS Code Webview 依赖 Service Worker,而浏览器只允许 Service Worker 在安全上下文(Secure Context)运行,但浏览器有特殊规则,其中http://localhost与http://127.0.0.1即使 HTTP 也算 Secure Context,如下图所示:

image.png

但是,如果是192.168.xx.xxx的这种的,浏览器是不信任的,这就加载不出来的,如下图所示:

image.png

使用下面命令,可以找到飞牛的自签证书,

sudo find /usr/trim -type f \( -name "*.crt" -o -name "*.pem" -o -name "*.key" \)

总结:code-server 的 Webview 不是因为 HTTP 本身不能用,而是因为浏览器在非安全环境禁止 Service Worker;IP + HTTP、自签未信任证书都会导致 Webview 加载失败,也就是要去Let's Encrypt或者外面用飞牛的Fnconnect也可以加载出来,因为浏览器信任这证书,所以没有证书什么的,对这一块不并熟悉,并没有什么好的思路来解决,可以参考下面的教程:

code-server Dokcer部署方法及踩坑


5、code-server复制粘贴的问题

如果用的是iframe的cgi方案,没有给父iframe就不会不能ctrl+c和ctrl+v,但可以用javascript来修复些问题,如果用的是统一网关方案则没有这问题,然后是http不能右键复制与粘贴,原因是不安全,用https就可以,一般用ctrl+c与ctrl+v就可以解决,如果遇到用不了的复制与粘贴,尝试使用ctrl+insert复制与shift+insert粘贴,这样就没有问题了。

总结

目前基本是覆盖了code-server的常见问题,如果飞牛后面可以出一个开启与关闭家目录的选项那就更好了,若遇到docker容器不断重启的问题,基本上很太可能是权限问题,比如是hermes的docker权限不对,那它就不能在应用路径创建文件,就会一直重启,而code-server容器也是这样的,目前主要有两个方式来使用code-server,一种是使用docket,它隔离性好但命令使用不方便,另一种是用systemctl来挂载,这种是原生的体验,但它会直接影响物理机。

收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则