背景
早上剛打開電腦,準(zhǔn)備開始一天的工作。但是發(fā)現(xiàn)VSCode無法連接上我的虛擬機(jī)了,導(dǎo)致無法工作了,這讓我十分頭疼。最終花了將近一天的時(shí)間將問題解決,但是其中的過程走了不少彎路,浪費(fèi)了不少時(shí)間,也進(jìn)行了反思。我們作為開發(fā)人員,應(yīng)該要用軟件思維去理解這款產(chǎn)品,幫助我們?nèi)ニ伎紗栴}。
一直秉承著:授人以魚不如授人以漁的準(zhǔn)則。本文分享一下自己?jiǎn)栴}分析思路,包括走的彎路。希望對(duì)大家有所幫助。
問題現(xiàn)象
早上打開電腦,準(zhǔn)備用vsCode連接遠(yuǎn)程開發(fā)服務(wù)器,進(jìn)行代碼開發(fā)。但是工具一直提示無法連接Could not establish connection to "x.x.x.x": The VS Code Server failed to start.
。如下:
根據(jù)提示是 vsCode Server 啟動(dòng)失敗了。在這里,我們要有一個(gè)概念:什么是vsCode Server
?
我們是通過windows 環(huán)境中的Visual Studio Code
工具,通過ssh 協(xié)議登錄上遠(yuǎn)程服務(wù)器,再進(jìn)行開發(fā)。這樣簡(jiǎn)單的功能似乎并不需要所謂的vsCode Server
,因?yàn)檫@是sshd服務(wù)的功能。在這里,我提出一個(gè)vsCode功能,如果由你去開發(fā)實(shí)現(xiàn),你會(huì)怎么去做呢?
- 如何實(shí)現(xiàn)擴(kuò)展功能中的代碼格式化
VS Code的一大特點(diǎn)是擁有豐富的擴(kuò)展生態(tài)系統(tǒng),其中有一個(gè)簡(jiǎn)單功能,就是格式化代碼。我們分別從 ssh 協(xié)議 和 vscode 兩種 方案分析,如下:
由時(shí)序圖可知,兩者的核心差異在于,文件格式化操作是在主機(jī)操作,還是在遠(yuǎn)程服務(wù)器操作。前者需要將格式化之后的文件信息再次上傳到遠(yuǎn)程服務(wù)器中,而后者則不需要。節(jié)約了帶寬和提高效率。
采用vsCode Server 的好處有很多,比如:
- 智能感知和代碼完成:通過在服務(wù)器上運(yùn)行,VSCode Server可以為遠(yuǎn)程項(xiàng)目提供智能感知、代碼完成、代碼片段、代碼導(dǎo)航等高級(jí)編輯功能。
- 版本控制集成:它支持版本控制系統(tǒng)的集成,如Git,允許開發(fā)者直接在編輯器中進(jìn)行代碼的提交、拉取、推送等操作。
- 調(diào)試支持:VSCode Server支持遠(yuǎn)程調(diào)試,意味著開發(fā)者可以在本地機(jī)器上設(shè)置斷點(diǎn)、單步執(zhí)行等,而調(diào)試的目標(biāo)程序運(yùn)行在遠(yuǎn)程服務(wù)器上。
- 語言功能:支持各種編程語言的語法高亮、代碼格式化、代碼修復(fù)等特性。
- 擴(kuò)展支持:VS Code的一大特點(diǎn)是擁有豐富的擴(kuò)展生態(tài)系統(tǒng),VSCode Server允許這些擴(kuò)展在遠(yuǎn)程環(huán)境中運(yùn)行,提供增強(qiáng)的開發(fā)體驗(yàn)。
- 文件同步和共享:它能夠?qū)崿F(xiàn)文件的快速同步,支持多人協(xié)作開發(fā),提高了團(tuán)隊(duì)開發(fā)的效率。
附一張官網(wǎng)圖:
那么如何解決The VS Code Server failed to start.
的錯(cuò)誤呢?通過百度查找,網(wǎng)友共給出了兩種方案:
- 打開VS Code菜單"View"->“Command Palatte”->“Kill VS Code Server on Host”,選擇出問題的遠(yuǎn)程服務(wù)器殺掉那個(gè)上面的VS Code server,然后重新嘗試登陸。
其實(shí)質(zhì)是擔(dān)心vsCode Server
運(yùn)行異常,希望通過殺死服務(wù),再通過重啟恢復(fù)。
- 嘗試把服務(wù)器端的vscode-server刪掉。
即執(zhí)行命令。其原理是懷疑vsCode server的版本或配置異常。刪除,在下次登陸時(shí),重新下載生成。
rm -rf ~/.vscode-server
很可惜,這兩個(gè)方法并不能解決我的問題。并且當(dāng)我刪除 vsCode server后,出現(xiàn)了新的錯(cuò)誤。Could not establish connection to "192.168.6.129": Failed to download VS CodeServer (XHR failed).
。如下:
其XHR failed
錯(cuò)誤表示資源下載失敗。一般情況下是因?yàn)檫B接無法訪問導(dǎo)致的,可能是域名無法訪問導(dǎo)致的。解決方式有兩個(gè)方向:
- 修改域名解析方式。比如設(shè)置代理或直接填充hosts配置。
- 手動(dòng)下載vsCode server。
我采用的是第二種方式,操作流程為:
- 獲取vsCode server 版本。
可通過查看[Help]–> [about]查看commitID。
- 手動(dòng)下載vsCode-Server。
//注:將commitID 替換,因?yàn)閏ommitID表示版本,vsCode server 應(yīng)該要與Client 版本一致,這樣才能避免異常
wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/${commitID}/vscode-server-linux-x64.tar.gz
-
安裝vsCode server。
- 創(chuàng)建新的空目錄
~/.vscode-server/bin/${commitID}
mkdir -p ~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/ rm ~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937/* -rf
- 將
vscode-server-linux-x64.tar.gz
重命名,并創(chuàng)建下載完成標(biāo)志文件。
yihua@ubuntu:~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937$ mv vscode-server-linux-x64.tar.gz vscode-server.tar.gz yihua@ubuntu:~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937$ touch vscode-server.tar.gz.done yihua@ubuntu:~/.vscode-server/bin/05047486b6df5eb8d44b2ecd70ea3bdf775fd937$
- 創(chuàng)建新的空目錄
-
重新登錄。
發(fā)現(xiàn)依然還是出現(xiàn)Waiting for server log...
錯(cuò)誤。
兜兜轉(zhuǎn)轉(zhuǎn)又回到了最初的起點(diǎn),于是我知道之前完全按照網(wǎng)上的思路是有問題的。于是我靜下心,決定看看vsCode的報(bào)錯(cuò)日志??赏ㄟ^終端上的OUTPUT查看。如下:
很明顯,這里提示一個(gè)warning和Error。
其中warning 表示GLIBC的版本應(yīng)該要 >=2.28。因?yàn)槭蔷?,我也沒有在意。
其中error 表示vsCode Server缺少依賴,可參考https://aka.ms/vsccode-remote/faq/old-linux
鏈接。這個(gè)鏈接似乎比較老了,我最終是通過這個(gè)鏈接查看到有用信息。https://code.visualstudio.com/docs/remote/faq
。
如圖所示,最新版本的Remote Development對(duì)內(nèi)核版本以及glibc、libstdc++都有版本要求。我的遠(yuǎn)程服務(wù)器信息如下:
因?yàn)檫h(yuǎn)程服務(wù)器使用的鏡像是ubuntu-18.04,因此內(nèi)核版本以及庫版本較低。接下來的思路則是提高服務(wù)器的內(nèi)核以及glibc版本。在這里我直接花了一個(gè)多小時(shí),將虛擬機(jī)鏡像改為ubuntu-20.04。
最終,再通過Visual Studio Code
可直接登錄,十分順利。
完結(jié)撒花 ~~~
總結(jié)
雖然問題最終是通過更新虛擬機(jī)鏡像版本得以解決。但是前面走了很多彎路。我的感受就是:遇到問題,我們的第一反映則是百度搜索,查看是否解決方法,然后按照他人的操作,執(zhí)行一遍,看是否能解決。如果不行,繼續(xù)百度,繼續(xù)做嘗試。
這樣的方式,在大多數(shù)情況下,可能會(huì)很快的幫助我們解決問題。但是當(dāng)你經(jīng)歷多次盲目的嘗試,并且失敗后。我們應(yīng)該靜下心來自己進(jìn)行問題分析,可能會(huì)有意想不到的發(fā)現(xiàn)。
多思考,多發(fā)現(xiàn)。
若我的內(nèi)容對(duì)您有所幫助,還請(qǐng)關(guān)注我的公眾號(hào)。不定期分享干活,剖析案例,也可以一起討論分享。
我的宗旨:
踩完您工作中的所有坑并分享給您,讓你的工作無bug,人生盡是坦途
文章來源:http://www.zghlxwxcb.cn/news/detail-839772.html
文章來源地址http://www.zghlxwxcb.cn/news/detail-839772.html
到了這里,關(guān)于vsCode無法連接服務(wù)器問題解決及思考的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!