當前位置: 妍妍網 > 碼農

計畫啟動失敗?不用慌!

2024-02-16碼農

大家好,我是老魚皮。

想必所有學編程的同學都遇到過這樣一個問題:把別人的程式碼或計畫拉取到自己的電腦上,然後按照別人提供的步驟去啟動計畫。結果當你自信滿滿地點選執行鍵時,就看到了。。。

這個時候,很多初學編程的同學就會慌了。為什麽我和你的程式碼一樣、操作一模一樣,結果計畫還啟動失敗了呢?!

不要慌,這其實是一個非常普遍的問題,也很好解決。今天這篇文章就來分享一下如何解決它。


首先,執行一個計畫,需要考慮以下幾個要素:

  1. 程式碼

  2. 環境(系統、平台)

  3. 依賴

  4. 資源

只要保證這 4 個要素和其他成功執行的計畫一致,那麽 99.9% 的機率你也能成功執行計畫!

首先是程式碼,這個沒什麽好說的,只要別人提供給你的程式碼是正確可執行的,直接 clone(拷貝)到本地即可。

然後是最最最最重要的環境!絕大多數情況下,都是因為你本地電腦的環境和其他同學的環境不一致,才導致了報錯。

環境又包括系統、平台等。系統就是指 Windows、Linux、MacOS 等,如果是 Java 計畫,因為 JVM 的存在,所以基本上不會出現系統不相容的問題;但如果是其他不具備跨平台特性的語言,在 Win 上能跑的計畫可能到 Linux 上就不能正確執行了,會出現各種各樣隱藏的坑。

平台是指執行程式碼需要的基本環境,比如 Node.js、Java、.NET 等。對於平台來說,最重要的莫過於 版本 了,如果版本不相容,那麽計畫就很容易執行不起來,或者有很多奇奇怪怪的錯誤。

就拿我給大家開源的計畫程式碼來說,有的同學能執行,有的同學就不能執行,多半是環境版本的問題。比如在安裝了 Java 17 的電腦上去跑 Java 8 的後端程式碼,在 Node 10 的電腦上去跑 Node 16 的前端程式碼等等。

除了環境外,我們在安裝計畫依賴時,也同樣需要註意版本。舉個例子,對於前端計畫來說,有些計畫依賴的版本定義可能並不明確,如下圖:

版本號前的 ^ 的意思是版本號的末尾可以變化,所以你實際安裝的版本可能和其他更早安裝的依賴版本不一致,有可能就會出現程式碼沖突、不相容。

所以前端計畫一般會使用 package-lock.json 檔來鎖住依賴的版本號,保證不同開發人員在不同時間拉取依賴時版本都是一致的。

而 Java 後端計畫相對就簡單了一些,我們寫 Maven(Gradle)依賴時一般都指定一個明確的版本號,不存在版本號不一致導致的沖突。(如果 jar 包間沖突的話,那又是另一個故事了,可以用 Maven Helper 解決一下)。

除了環境之外,還有一個很不起眼的因素,就是資源,像 CPU、記憶體、硬碟容量等等。比如計畫需要至少 8 G 記憶體、10 G 硬碟,結果你的電腦只有 4 G 記憶體、硬碟也不夠了,那麽計畫要麽執行不起來,要麽就是後期出現各種奇奇怪怪的問題。

除了上述幾個因素外,網路環境(比如無法拉取內網依賴)、程式碼路徑(不要出現中文)等也可能會影響計畫的執行,這些都要註意。

綜上,我們如果拉下來別人的開源計畫學習、或者是拉取公司的計畫開發前,最先要做的事情是閱讀官方文件來確定計畫執行依賴的環境(版本)、需要的資源等。

以開源知識庫網站 wiki.js 為例,很明確地指出了這些要求:

所以閱讀官方文件真的是非常重要的!像我在星球裏帶大家做了一個使用者中心計畫,剛做完框架版本就大更新了,結果一些同學就一臉懵逼了。其實只要仔細閱讀一遍官方文件,很多問題就迎刃而解了。


以上就是本期分享,希望對大家有幫助。

往期推薦