本部落格已搬遷, 3秒後跳轉...

Node.js版本更新、Hexo部署更新失敗 | Laplace's Lab

Node.js版本更新、Hexo部署更新失敗

平時會用到Node的時候就只有用Hexo寫部落格,自己對它是非常陌生的,但最近要寫React Native,然後就發現不得了的事情:Node.js版本過舊無法使用React Native -> MacOS版本過舊無法更新Node.js…窩的老天鵝呀。

於是我就先把MBA從Catalina直接上Big Sur,然後開始折騰如何更新Node.js。我不大記得當初如何在Mac上安裝Node.js的,但應該不是透過Homebrew,因為我無法透過它直接upgrade or uninstall,而用Homebrew直接安裝了新版後,在terminal用指令查Node.js版本依然是舊版。爬文測試後發現要手動移除再用Homebrew重新安裝:

1
2
3
4
5
6
$ rm /usr/local/bin/node
$ rm /usr/local/bin/npm
$ rm /usr/local/bin/npx
$ rm /usr/local/lib/node_modules

$ brew install node

*因為會移除node_modules資料夾,所以我先把hexo-cli資料夾移出,更新完Node.js再丟回去。

好啦,OS更新了,Node.js也更新了,然後呢?然後我發現Hexo部署更新失敗…窩的老天鵝呀。😭

1
2
FATAL Something's wrong. Maybe you can find the solution here: https://hexo.io/docs/troubleshooting.html
TypeError [ERR_INVALID_ARG_TYPE]: The "mode" argument must be integer. Received an instance of Object

去Hexo的官網看看troubleshooting在留言發現有相關討論,這竟然是因為Node.js版本太新…看來我只能降版:

1
2
3
4
5
6
7
8
9
$ brew search node
==> Formulae
heroku/brew/heroku-node node-sass nodebrew
libbitcoin-node node@10 nodeenv
llnode node@12 nodenv
node node@14
node-build node_exporter

$ brew install node@12

降版安裝了node@12後,Homebrew提示此版本是「keg-only」,仔細看它的安裝路徑是在/usr/local/opt裡,Homebrew也不會為其建立system link。所以我得手動將node@12路徑加入環境變數,而hexo-cli移動到其根目錄下的/lib/node_modules後也必須手動加入環境變數:

1
2
$ echo 'export PATH="/usr/local/opt/node@12/bin:$PATH"' >> ~/.zshrc
$ echo 'export PATH="/usr/local/opt/node@12/lib/node_modules/hexo-cli/bin:$PATH"' >> ~/.zshrc

搞定。

Ref.

0%