node & nodejs導致rails專案建立失敗

更新於 2022/05/02閱讀時間約 4 分鐘
在第一次建立rails專案時,通常都會遇到不少問題,像我是使用windows系統,所以也經歷了一些麻煩。如果各位第一次建立rails專案就可以看到下圖綠色字體的成功字樣,那真的如天選之人般幸運阿~
如果你跟我一樣注定要經歷windows系統的苦痛,就請繼續看下去吧QQ

以下是我在建立rails專案時,所遇到的狀況:
$ rails new "project's name" 建立新專案,出現了「Node.js not installed. Please download and install Node.js」的錯誤訊息。
(記得:錯誤訊息不能忽略,否則會影響到日後的操作。)
這時只要按照後面給的網址下載node跟nodejs就好。
進入該網址後,往下拉點入install on windows subsystem for linux (wsl),這是為了讓你在你的終端機上進行安裝。
點進去後,往下拉到下圖的標題,開始按照步驟執行即可完成。

完成以上node跟nodejs安裝後,回到終端機上輸入rails new的指令建立專案應該就沒問題了。
但我有遇到新的問題:
系統在建立rails專案過程中,在安裝webpacker時發生失敗,其中「nod的'GLIBC_2.28' not found」的問題,找了很多網站但還是找不到解決方法。
然而下面一行的「Webpacker 的安裝需要nodejs為10.17.0版本以上才能執行,而目前系統使用的是8.10.0版本」。 (這部分不知道各位是不是都顯示8.10.0,但沒關係,因為你會看到這則Webpacker的錯誤訊息,就代表你的nodejs版本就是不符合他nodejs需要10.17.0版本以上的需求)
這個部分的問題,我嘗試了好幾遍後發現,只需要解決nodejs版本的問題就能夠順利建立專案(也就是不再有任何錯誤訊息,包含'GLIBC_2.28' not found)。
如果你在這時輸入指令確認版本 $ node -v 及 $ nodejs -v,可能會發現前者給你的訊息是剛剛看到的'GLIBC_2.28' not found,後者給你的訊息則是v8.10.0(也就是剛剛webpacker的錯誤訊息指出你nodejs正在使用的版本)。
那我們先把終端機關掉,重新開一個新的終端機,接著輸入指令$ nvm use --lts 將系統使用的node版本變成最新版本,輸入後便會看到系統說,正在使用 XXXX版(剛剛安裝的最新版)。
這時你在輸入指令確認版本 $ node -v 及 $ nodejs -v,前者不再出現'GLIBC_2.28' not found,而會出現 XXXX版,而nodejs還是顯示使用8.10.0版本。
確定了node -v 有出現最新版本,你就可以輸入rails new建立專案,此時應該就可以成功了。
但是使用 nvm use --lts 只是讓你變更當前使用的版本,所以你重開終端機,版本會回到原來的舊版本!!!
因此建議使用nvm alias default <version> 將預設版本變更成最新版本,往後建立專案就不必再遇到同樣的問題。
#設定v16.15.0為預設版本 #nvm alias default v16.15.0
即便你現在變更當前版本讓你可以順利建立專案,日後再啟動rails server 時,會因為你當前使用的node版本太老舊(因預設是舊的),而產生以下狀況:
所以建議更改node的預設版本,才能徹底解決問題。

另外推薦這位KEN 陳建權大大寫的關於使用 NVM 管理 Node.js 版本文章。
因為上述的問題,會導向NVM / NODE / NODE.JS 這些背景知識,而該文章有簡單介紹NVM是什麼,以及相關的設定變更指令。我覺得非常清楚好懂,對新手非常友善。

如果你有遇到其他問題~希望你能分享上來一起想辦法~
希望這篇文章能夠幫助到各位閱讀者,祝大家順利~
avatar-img
1會員
13內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Mike的沙龍 的其他內容
public: 完全公開的方法,內外皆可存取。 private: 對外限制,不能有特定的receiver,故僅能在類別方法裡使用,且不能有receiver。 protected : 對外有限制,不能有receiver,但在class裡面則可有receiver也可以沒有receiver。
public: 完全公開的方法,內外皆可存取。 private: 對外限制,不能有特定的receiver,故僅能在類別方法裡使用,且不能有receiver。 protected : 對外有限制,不能有receiver,但在class裡面則可有receiver也可以沒有receiver。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
建立一個屬於自己喜愛球員的清單。 ※ 專案開發環境 架設 Node.js 伺服器。 用 Express.js 進行全端開發。 用 MongoDB 資料庫。 ※ 專案開發技術 使用 Express handlebars,為球員清單做出佈局和局部樣板
Thumbnail
這篇想來寫,剛碰到js得時候,為了讓程式可以運作而安裝Node.js 。Node.js 是能夠在伺服器上面運行 JavaScript 的應用平台環境,透過 Node.js 提供的函式庫與執行環境能完成伺服器端服務。此篇幅就直接從純後端的角度切入摟(對不起拉我寫來寫去還是不知道怎麼順順的寫好文章開頭Q
Thumbnail
「VSCode 是世上最棒的 IDE 了吧」這時有人跳出來表示不服,定睛一看原來是那陳年的大哥 Visual Studio,他說道:「用 Windows 做開發的人一定要裝 Visual Studio 這樣專業的 IDE,不要裝其他次等的文字編輯器,才可以有效提升專業度。」
Thumbnail
到底誰導致濁水漂流? 真正的濁水其實是指哪一方?
Thumbnail
Bud, in the early morning. Bloom, in the early afternoon. Tempo of the rose. Color code of ROSE: Pink as the tenderly Passion, white as the ...
Thumbnail
最近對爬蟲感到興趣,幾天的研究發現 Puppeteer 這套由 Google 開源、使用無介面操作 Chrome 做自動化測試的 Node.js 函式庫也能用來爬取資料...
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
Node.js是一個JavaScript運行環境。它使用了一個非阻塞、事件驅動的I/O模型,使其非常適合用於數據密集型的即時應用程序。簡單來說,Node.js允許你使用JavaScript來編寫伺服器端代碼。 nvm 安裝nvm Windows : 點擊 Releases · coreybut
Thumbnail
建立一個屬於自己喜愛球員的清單。 ※ 專案開發環境 架設 Node.js 伺服器。 用 Express.js 進行全端開發。 用 MongoDB 資料庫。 ※ 專案開發技術 使用 Express handlebars,為球員清單做出佈局和局部樣板
Thumbnail
這篇想來寫,剛碰到js得時候,為了讓程式可以運作而安裝Node.js 。Node.js 是能夠在伺服器上面運行 JavaScript 的應用平台環境,透過 Node.js 提供的函式庫與執行環境能完成伺服器端服務。此篇幅就直接從純後端的角度切入摟(對不起拉我寫來寫去還是不知道怎麼順順的寫好文章開頭Q
Thumbnail
「VSCode 是世上最棒的 IDE 了吧」這時有人跳出來表示不服,定睛一看原來是那陳年的大哥 Visual Studio,他說道:「用 Windows 做開發的人一定要裝 Visual Studio 這樣專業的 IDE,不要裝其他次等的文字編輯器,才可以有效提升專業度。」
Thumbnail
到底誰導致濁水漂流? 真正的濁水其實是指哪一方?
Thumbnail
Bud, in the early morning. Bloom, in the early afternoon. Tempo of the rose. Color code of ROSE: Pink as the tenderly Passion, white as the ...
Thumbnail
最近對爬蟲感到興趣,幾天的研究發現 Puppeteer 這套由 Google 開源、使用無介面操作 Chrome 做自動化測試的 Node.js 函式庫也能用來爬取資料...